排序之氣泡排序

2021-07-12 05:58:38 字數 1435 閱讀 2346

例:將5個數字進行從大到小排序後輸出。

輸入:35 99 18 12 76

輸出:99 76 35 18 12

對於例,氣泡排序大致的思路就是一趟一趟地迴圈比較,每一次迴圈的目的都是將未排序的數字中最小的數字移動到末尾。如:

第一趟:xx xx xx xx 12

第二趟:xx xx xx 18 12

第三趟:xx xx 35 18 12

第四趟:99 76 35 18 12

在分析時,我們先不考慮第

一、二、三趟前面「xx」的數字是什麼情況,只需要知道在末尾我們想要得到的是如以上的結果。在第四趟按照前三趟的規律可以確定76,剩下第乙個「xx」的位置顯然除了99就沒有其他了,所以不需要進行第五趟。

通過以上分析已經可以知道,如果我們要排序n個數字,只需要進行n-1趟迴圈即可。

然後考慮每一趟如何將最小的數字歸位。氣泡排序的方法是逐個兩兩比較大小,如果前者小於後者就交換位置,如:

(初始為35 99 18 12 76)

第一趟的移動過程:

99 35 18 12 76(比較了第1位和第2位,交換了位置)

99 35 18 12 76(比較了第2位和第3位,沒有交換位置)

99 35 18 12 76(比較了第3位和第4位,沒有交換位置)

99 35 18 76 12(比較了第4位和第5位,交換了位置)

以上是第一趟的移動過程,顯然第二趟移動過程是基於第一趟的結果的,即

初始為99 35 18 76 12

第二趟的移動過程:

99 35 18 76 12(未交換)

99 35 18 76 12(未交換)

99 35 76 18 12(交換)

第三趟的移動過程:

99 35 76 18 12(未交換)

99 76 35 18 12(交換)

第四趟的移動過程:

99 76 35 18 12(未交換)

以上是四趟所有的交換過程,分析可以發現由於第一趟已經將12歸位,即確定了12是這5個數字中最小的,因此在第二趟中就沒有必要再把第4位和第5位進行比較,同理,第三趟不需要比較第3位和第4位,第4位和第5位。因此可知第一趟比較4次,第二趟比較3次,第三趟比較2次,第四趟比較1次,可以發現:趟的次序 + 比較次數 = 數字個數

用c語言表示,首先要獲取5個待排序的數字,然後進行排序,最後輸出。其中排序是乙個雙重巢狀迴圈,第一層迴圈表示迴圈「幾趟」,如5個數字要4趟,6個數字要5趟,n個數字要n-1趟。第二層迴圈表示每趟要迴圈「比較幾次」,上面分析已知:比較次數 = 數字個數 - 趟的次序。

int main()

for(i = 0; i < 4; i++) //5個數字需要進行4趟比較 }}

for(i = 0; i < 5; i++)

return

0;}

排序之 氣泡排序

先科普一下到底什麼是氣泡排序 氣泡排序到底能幹嘛?氣泡排序 bubble sort 是一種 電腦科學領域的較簡單的 排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字...

排序之氣泡排序

氣泡排序是一種交換排序。什麼是交換排序呢?交換排序 兩兩比較待排序的關鍵字,並交換不滿足次序要求的那對數,直到整個表都滿足次序要求為止。演算法思想它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成...

排序之氣泡排序

氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序 如從大到小 首字母從a到z 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。這個演算法的名字由來是因為...