排序演算法之氣泡排序 BubbleSort

2021-10-23 14:59:56 字數 634 閱讀 7128

通過比較相鄰元素大小來決定是否交換位置。

如上圖所示,以一組資料 為例,進行氣泡排序的演算法演示:

第一輪:從陣列第乙個元素開始,依次比較相鄰元素,如:20與40比較,位置不變;40與30比較交換位置。。。。最後,最大元素60位於陣列末尾。

重複上述操作

第五輪,比較10與20,位置不變,完成最終排序。

#include

int main()}}

printf("\n排序後順序:\n");

for(i=1;i<11;i++)

printf("%5d",a[i]);

printf("\n");

}方案:

設定標誌位flag,如果發生了交換flag設定為true;如果沒有交換就設定為false。

這樣當一輪比較結束後如果flag仍為false,即:這一輪沒有發生交換,說明資料的順序已經排好,沒有必要繼續進行下去。

優化**:

#include

int main()

}if(! flag)

}printf("\n排序後順序:\n");

for(i=1;i<11;i++)

printf("%5d",a[i]);

printf("\n");

}

冒泡 bubble 排序演算法

氣泡排序是穩定的排序演算法。1 氣泡排序演算法的基本思想 氣泡排序的方法為 將被排序的記錄陣列a 1.n 垂直排列,每個記錄a i 看做重量為a i 氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列a 凡是掃瞄到違反本原則的輕氣泡,就是其向上 漂浮 如此反覆進行,知道最後任何兩個氣泡都是輕者...

資料結構中的排序 冒泡(bubble)排序

氣泡排序的思路 以公升序為例,將數列中的第乙個數拿出來,依次後後面的比較,如果比後面的數大,那麼久交換,直到比較到最後乙個,當這一趟比較結束後,第乙個數就是最小的。然後再取第二個數,同樣的依次和後面的數比較,比較結束後,這個資料就是第二小的,後面的就是依次類推。c語言中兩個for迴圈即可實現。inc...

排序演算法之氣泡排序

參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...