氣泡排序演算法的基本思想是:假設待排序表長為n,從後往前(或從前往後),兩兩比較相鄰元素的值,若為逆序(即a[i-1]>a[i]),則交換它們,直到序列比較完。我們稱它為一趟冒泡,如果將最小的元素交換到待排序序列的第乙個位置(關鍵字小的元素往上「漂浮」,這就是氣泡排序名字的由來)。下一趟冒泡時,前一趟確定的最小元素不再參與比較,待排序列減少乙個元素,每趟冒泡的結果把序列中最小元素放到了序列的最終位置,……,這樣最多做n-1趟冒泡就能把所有的元素排好序。
void bubblesort(elemtype a,int n)
if(flag==false)
return;//本趟沒有發生交換,說明已經有序}}
空間複雜度:僅使用了常數個輔助單元,因而空間複雜度為o(1)。
時間複雜度:當初始序列時,顯然第一趟冒泡後flag依然為false(本趟冒泡沒有元素交換),從而直接跳出迴圈,比較次數為n-1,移動次數為0,從而最好情況下的時間複雜度為o(n);當初始序列為逆序時,需要進行n-1趟排序,第i趟排序要進行n-i次關鍵字比較,而且每次比較都必須移動元素3次來交換元素位置。這種情況下,比較次數=n(n-1)/2,移動次數=3n(n-1)/2。
從而最壞情況下的時間複雜度為o(n²)。其平均時間複雜度為o(n²)。
穩定性:由於當i>j且a[i]=a[j]時,不會交換兩個元素,所以氣泡排序是乙個穩定的排序方法。
資料結構 氣泡排序
起泡排序的過程很簡單。首先將第乙個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則將兩個記錄交換之,然後比較第二個記錄和第三個記錄的關鍵字。依次類推,直至第n 1個記錄和第n個記錄的關鍵字進行比較為止。上述過程稱作第一趟起泡排序,其結果使得關鍵字最大的記錄被安置到最後乙個記錄的位置上。然後進行...
資料結構 氣泡排序
氣泡排序演算法的基本思想是 假設待排序表長為n,從後往前 或從前往後 兩兩比較相鄰元素的值,若為逆序 即a i 1 a i 則交換它們,直到序列比較完。我們稱它為一趟冒泡,如果將最小的元素交換到待排序序列的第乙個位置 關鍵字小的元素往上 漂浮 這就是氣泡排序名字的由來 下一趟冒泡時,前一趟確定的最小...
資料結構 氣泡排序
目標效果 原始碼 include void print out int a,int n void bubble sort int a,int n int main printf 起泡排序 n printf 排序前 n printresult a,10 排序方法 bubblesort a,10 pri...