資料結構與演算法15 氣泡排序

2021-09-25 23:40:07 字數 1147 閱讀 7432

通過例子消化概念:

printf("排序後的結果是:");

for( i=0; i<10; i++ )

printf("\n");

return 0;

}下標元素05

1221

3344

5667

7788

99在下標為0時,下標0的元素和剩下的元素比較大小

在下標為1時,下標1的元素和剩下的元素比較大小

以此類推…

氣泡排序的要點:

兩兩 注意是相鄰的兩個元素的意思;

如果有n個元素需要比較n-1次,每輪減少1次比較;

既然叫氣泡排序,那就是從下往上兩兩比較,所以看上去就跟跑跑往上冒一樣。

#include void bubblesort( int k, int n )

else

flag = 0;}}

printf("總共進行了%d次比較,進行了%d次移動!",count1,count2);

}int main()

; bubblesort(a,10);

printf("排序後的結果是:");

for( i=0; i<10; i++ )

printf("\n");

return 0;

}

下標元素0

1102

2334

4556

6778

899像這種特殊的情況,第一次迴圈是在10個元素裡面兩兩比較,剛好在第9次比較中,要移動位置,所以flag賦值為1;進行第二次迴圈比較,第二次迴圈比較是在9個元素裡面比較,在9個元素比較完之後呢,沒有發生位置交換,說明順序是正確的,所以flag=0,可以直接退出大迴圈了。也就是說總共比較了9+8=17次。

加入flag之後呢,可以大大減小比較的時間,因為兩兩比較之後,如果兩個元素沒有交換位置說明他們的順序是正確的。

資料結構與演算法 排序 氣泡排序

兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...

資料結構與演算法 排序 氣泡排序

今天來學一下十大排序 首先,我們先了解下各個排序的時間複雜度 冒泡 選擇 插入 歸併 快速 希爾 堆排序屬於比較排序 在這裡,我們預設排序是從小到大排序。乙個動態演示各種排序演算法的動畫 visualgo 如果相等的兩個元素,在排序前後的相對位置保持不變,那麼這個演算法是穩定的排序演算法。比如 5 ...

資料結構與演算法 氣泡排序

氣泡排序的思想是,從前往後 或從後往前 掃瞄,每找乙個逆序對,就將它更正過來,這樣每一輪總可以找到乙個最大值或最小值。1 從前往後掃瞄,每次找到的較大值插入到後面,第一層迴圈代表當前插入位置。public static void sinksort int nums,int start,int end...