通過比較相鄰元素大小來決定是否交換位置。
如上圖所示,以一組資料 為例,進行氣泡排序的演算法演示:
第一輪:從陣列第乙個元素開始,依次比較相鄰元素,如: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...
排序演算法之氣泡排序
參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...