c語言起泡排序法是什麼?

時間 2021-06-04 22:53:59

1樓:C語言和CPP程式設計

排序的規律有兩種:一種是「公升序」,從小到大;另一種是「降序」,從大到小。可以把這個題目抽象為一般形式「對n個數按公升序排序」。

排序的方法有很多種,本例用「起泡法」排序。「起泡法」的基本思路是:每次將相鄰兩個數比較,將小的調到前頭。

若有6個數:9,8,5,4,2,0。第1次先將最前面兩個數8和9對調。

第2次將第2和第3個數(9和5)對調…如此共進行5次,得到8-5-4-2-0-9的順序,可以看到:最大的數9已「沉底」,成為最下面乙個數,而小的數「上公升」。最小的乙個數0已向上「浮起」乙個位置。

經過第一趟(共5次比較與交換)後,已得到最大的數9。

然後進行第2趟比較,對餘下的前面5個數(8,5,4,2,0)進行新一輪的比較,以便使次大的數「沉底」。按以上方法進行第2趟比較。經過這一趟4次比較與交換,得到次大的數8。

按此規律進行下去,對6個數要比較5趟,才能使6個數按大小順序排列。在第1趟中要進行兩個數之間的比較共5次,在第2趟過程中比較4次…第5趟只須比較1次。

如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次兩兩比較,在第j趟比較中要進行n-j次兩兩比較。

2樓:

本質上是基於下標的排序,就像氣泡總是往水面浮。以降序為例,不斷的交換相鄰位置的數,把相鄰位置較小的數往後面交換,一輪遍歷下來,自然最小的數(最輕的泡泡)就浮到了最後的位置(水面)。重複這個過程n次,所有的數都會浮到它應該浮到的位置。

不過基於我的描述還有一些地方可以優化,題主可以想一想。

C語言中的選擇排序?

郭建波 選擇排序的過程 陣列排序前 7 23 12 4 33 21 2 17 13 9 第一輪迴圈 2 23 12 4 33 21 7 17 13 9 第二輪迴圈4 12 23 33 21 7 17 13 9 第三輪迴圈7 23 33 21 12 17 13 9 第四輪迴圈9 33 21 12 17...

c 中入門排序方法有什麼,桶排序好用嗎

邱昊宇 最好入門的其實是隨機排序,核心演算法就是瞎 JB 試。std mt19937 rng while std is sorted std begin arr std end arr 當然簡單是簡單,但是可能做很多無用功,改進一下就是排列排序 有調理地試。while std next permut...

怎麼使用c語言中的sort排序,在結構體裡面按學號排序??

陳舸 問題描述的不是很清楚,不過我大概猜你是想對某些結構體做排序,結構體裡有個學號的字段,要以學號為標準來排序?可以使用qsort 隨手碼了乙份。include include include typedef struct student Student int compare const void...