氣泡排序法(C語言)

2021-10-11 18:59:45 字數 1117 閱讀 1822

氣泡排序:相鄰兩個數兩兩比較,小的數向前移(上浮),大的數向後移(下沉),如同水中的泡泡上浮一般;

氣泡排序圖示:

如果有n個數,則要跑n-1次比較(每跑一次比較就會有乙個較大數「沉底」),交換兩個數的次數會隨著跑的次數越來越多而變少。

c語言**:

#include

intmain()

;int t,i,j;

for(i=

0;i<5-

1;i++

)//要跑5-1次}}

for(i=

0;i<

5;i++

)return0;

}

但是上述**有乙個缺點,如果要比較5個數(1,-1,8,4,2)會發現當跑第二次的時候數列已經有序了,剩下的第三次和第四次是可以不用跑的,是多餘的。對**進行優化,這樣可以節省執行時間。

例子:原始陣列:1,-1,8,4,2

(1)-1,1,4,2,8

(2)-1,1,2,4,8

(3)-1,1,2,4,8

(4)-1,1,2,4,8

從上面看出從跑第3次時就已經沒有兩個數交換了(說明此時陣列已經有序了),因此我們可以設定乙個bool變數用來檢測是否發生兩個數的交換,如果沒有則說明陣列已經有序了,可以跳出迴圈了。

優化後的**如下:

#include

#include

intmain()

;int t,i,j;

for(i=

0;i<5-

1;i++

)//要跑5-1次}if

(//沒有元素交換,陣列已有序

}for

(i=0

;i<

5;i++

)return0;

}

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語言 氣泡排序法

氣泡排序是一種簡單的排序演算法,它也是一種穩定排序演算法。其實現原理是重複掃瞄待排序序列,並比較每一對相鄰的元素,當該對元素順序不正確時進行交換。一直重複這個過程,直到沒有任何兩個相鄰元素可以交換,就表明完成了排序。以冒泡法 從小到大 為例 原理 比較相鄰的元素,將值大的元素交換到右邊 原始陣列資料...