對於乙個一維的陣列(列表),每個元素都和它旁邊的元素作比較,順序不對就交換位置。第一次處理全部n個元素,最大值將冒泡到陣列末尾位置。第二次處理全部n-1個元素,第三次處理全部n-2個元素。以此類推,每次都將最大值元素放到最右邊的位置。冒泡法的優點是任何時候陣列完全排好序就可以提前退出。
來看動態演示:
下面是演算法:
for i = n to 1
for j = 1 to i
in_order 標誌設定為true
if arr[j+i] < arr[j]
交換arr[j+i] 和arr[j]
in_order 標誌設定為false
如果in_order滿足要求,跳出迴圈
注:不要邏輯變數in_order(python,c++叫布林變數)也行,可以簡化**。但這樣不能提前退出迴圈。
fortran以及python實現:
氣泡排序步驟遍歷列表並比較相鄰的元素對。如果元素順序不符合要求,則交換它們。重複遍歷列表未排序部分的元素,直到完成列表排序。因為氣泡排序重複地通過列表的未排序部分,所以它具有最壞的情況複雜度o(n^2)。
C語言 氣泡排序法
此題的解決思路為 對於一組數字的排序,我們通過迴圈比較兩個相鄰元素的大小,若為公升序排列則將最大值替換到最後。這樣依次類推進行多趟氣泡排序即可將這組數字公升序排列。例如 10,9,8,7,6,5,4,3,2,1 通過一趟氣泡排序,我們將10置於最後一位。9,8,7,6,5,4,3,2,1,10 第二...
C語言 氣泡排序法
氣泡排序法 排序的規律有兩種 一種是公升序,從小到大 另一種是降序,從大到小。排序方法是一種很重要的,基本的演算法。冒泡法的基本思路是 每次將相鄰的兩個數比較,將小的調到前面,讓最大的元素不斷地往後移。例 有6個數 9,8,5,4,2,0 第一次對調情況如下圖,可以看到將最大的數字9調到了最後,經過...
氣泡排序法(C語言)
氣泡排序 相鄰兩個數兩兩比較,小的數向前移 上浮 大的數向後移 下沉 如同水中的泡泡上浮一般 氣泡排序圖示 如果有n個數,則要跑n 1次比較 每跑一次比較就會有乙個較大數 沉底 交換兩個數的次數會隨著跑的次數越來越多而變少。c語言 include intmain int t,i,j for i 0 ...