www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > C語言與CPP編程
[導(dǎo)讀]冒泡排序簡介冒泡排序是因為越小的元素會經(jīng)由交換以升序或降序的方式慢慢浮到數(shù)列的頂端,就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名冒泡排序。復(fù)雜度與穩(wěn)定性思路原理以順序為例從第一個元素開始一個一個的比較相鄰的元素,如果第一個比第二個大即a[1]>a[2],就彼此交換。從...



冒泡排序

簡介

冒泡排序是因為越小的元素會經(jīng)由交換以升序或降序的方式慢慢到數(shù)列的頂端,就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名冒泡排序

復(fù)雜度與穩(wěn)定性

思路原理

以順序為例

  1. 從第一個元素開始一個一個的比較相鄰的元素,如果第一個比第二個大即a[1]>a[2],就彼此交換。

  2. 從第一對到最后一對,對每一對相鄰元素做一樣的操作。此時在最后的元素應(yīng)該會是最大的數(shù),我們也稱呼一遍這樣的操作一趟冒泡排序。

  3. 針對所有的元素重復(fù)以上的步驟,每一趟得到的最大值已放在最后,下一次操作則不需要將此最大值納入計算。

  4. 持續(xù)對每次對越來越少的元素,重復(fù)上面的步驟。

  5. 直到所有的數(shù)字都比較完成符合a[i],即完成冒泡排序。

圖示過程

以數(shù)組數(shù)據(jù){ 70,50,30,20,10,70,40,60}為例:

如圖,每一次排序把一個最大的數(shù)被放在了最后,然后按照這個趨勢逐漸往前,直到按從小到大的順序依次排序。

到了第4輪的時候,整個數(shù)據(jù)已經(jīng)排序結(jié)束了,但此時程序仍然在進行。

直到第5,6,7輪程序才算真正的結(jié)束,這其實是一種浪費算力的表現(xiàn)

主要代碼實現(xiàn)

void?bubble_sort(int?a[],int?n)?{
????for(int?i=0;?i????????for(int?j=0;?j????????????if(a[j]>a[j 1])?{
????????????????swap(a[j],a[j 1]);??//交換數(shù)據(jù)
????????????}
????????}
????}
}
注意,由于C 的namespace std命名空間的使用,std自帶了交換函數(shù)swap(a,b),可以直接使用,其功能是交換a與b的兩個值,當(dāng)然你可以自定義swap函數(shù),其模板代碼為:

template????????//模板類,可以讓參數(shù)為任意類型
void?swap(T?
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉