氣泡排序的過程很簡單,就是不斷比較相鄰兩個元素的大小關係,若逆序則交換之,這樣通過一輪的比較,關鍵字最大的記錄就沉底了。
一般地說,第i趟氣泡排序是從第乙個元素起到第n-i+1個元素依次比較相鄰兩個記錄的關鍵字,並在「逆序」時交換相鄰記錄,其結果是這n-i+1個記錄中關鍵字最大的記錄被交換到n-i+1的位置上。
當然也可以反過來,從後往前進行,這樣每經過一趟排序,就把未排序的序列中最小的元素放在它應當處於的位置上,然後下次比較就不再讓前面的元素參與。
整個排序過程需要進行k趟氣泡排序,其中k至少為1,至多為n-1次,如果一趟氣泡排序中沒有出現交換元素的操作,則說明序列已經有序,可以停止排序。
時間複雜度:正序時o(n), 逆序時o(n2),平均時間複雜性o(n2)。
一般情況下貌似效率不及直接插入排序(儘管它們的平均時間複雜度都是o(n2))。
假設陣列元素為整型,並且記錄本身就為關鍵字。
設定標誌變數,這樣當序列有序時及時退出迴圈,避免冗餘處理。
bubble sort
typedef intelemtype;
void bubblesort(elemtype a, int
n) }
if(sorted)}}
氣泡排序 bubble sort
氣泡排序是最基本的排序演算法,常被做為內部排序的第乙個排序演算法進行講解。它的原理非常簡單,只是一 個兩層迴圈,每次將最大或最小的放到陣列最後。演算法如下 b為陣列的起始位置,e為陣列的結果位置 int bubble int data,int b,int e return n 這個函式返回兩個整數比...
氣泡排序(Bubble Sort)
無論你學習哪種程式語言,在學到迴圈和陣列時,通常都會介紹一種排序演算法來作為例子,而這個演算法一般就是氣泡排序。並不是它的名稱很好聽,而是說這個演算法的思路最簡單,最容易理解。因此,哪怕大家可能都已經學過氣泡排序了,我們還是從這個演算法開始我們的排序之旅。氣泡排序 bubble sort 一種交換排...
氣泡排序 Bubble Sort
維基百科 氣泡排序 演算法思想 不斷的交換相鄰的兩個反序元素,使最小元素 上浮 或使最大元素 下沉 每一趟 冒泡 都會確定乙個最大的元素或最小的元素,同選擇排序類似,演算法總共只需進行n 1趟。將乙個陣列豎著放,低位址在上面,高位址在下面,所謂 上浮 就是較小的元素不斷向低位址靠近,所謂 下沉 就是...