起泡排序的過程很簡單。
首先將第乙個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則將兩個記錄交換之,然後比較第二個記錄和第三個記錄的關鍵字。依次類推,直至第n-1個記錄和第n個記錄的關鍵字進行比較為止。
上述過程稱作第一趟起泡排序,其結果使得關鍵字最大的記錄被安置到最後乙個記錄的位置上。然後進行第二趟起泡排序,對前n-1個記錄進行同樣操作,其結果是使關鍵字次大的記錄被安置到第n-1個記錄的位置上。
一般地,第i趟起泡排序是從r[1]到r[n-i+1]依次比較相鄰兩個記錄的關鍵字,並在逆序時交換相鄰記錄,其結果是這n-i+1個記錄中關鍵字最大的記錄被交換到第n-i+1的位置上。
整個排序過程需進行k(1<=k< n)趟起泡排序。
顯然,判別起泡排序結束的條件應該是「在一趟排序過程中沒有進行過交換記錄的操作」。我們將通過設立乙個bool型別變數來判斷結束條件。
其演算法如下
void bubblesort(int r,int size)
if(!exchange) //本趟沒有發生交換,提前終止演算法
return ;
}}
(1)氣泡排序的最好時間複雜度o(n)
(2)氣泡排序的最壞時間複雜度為o(n^2)
(3)氣泡排序的平均時間複雜度為o(n^2)
(4)演算法穩定性:穩定的
資料結構 氣泡排序
氣泡排序演算法的基本思想是 假設待排序表長為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...
資料結構 氣泡排序
氣泡排序 氣泡排序的主要原理是兩兩比較,將較大者放在靠後的位置,用此種方法,將最大的值一點一點推到數列的後端。因此,對於乙個長為n的陣列,經過n 1遍冒泡,一定能將陣列排序。時間複雜度 設t n 為對長度為n的待排序列進行排序的時間。則比較次數為 n 1 n 2 1 n 1 n 2 o n 2 而且...