1樓:網友
其實就如其名。如下資料。
從5開始與相鄰的數雀旅字交換,大的擺右小的擺左。
則第一的結果為。
然後繼續執行,直到與最後乙個資料交換完畢,結束一次迴圈。
於是的得到。
很顯然,最後乙個資料時最大的,冒泡就是這個意思,每次迴圈找出最大的,然後找到除這個數之外頃拍凳最大的,直至陣列排序完畢。
其實你也可以,用乙個max函式賀螞返回陣列的最大值的位置,把它與最後乙個數字交換。如。
然後除掉最後乙個數字,找最大值與倒數第2個數字交換。
以此類推。
c語言中氣泡排序的實現原理是什麼?
2樓:網友
氣泡排序,就是對一組數進行逐趟排序的方法,具體分為公升序和降序。
以公升序為例。
每一趟的任務,就是從一組數的第乙個數開始,依次比較相鄰的兩個數的大小。既然是公升序,那麼比較後,如果前者大於後者,那麼兩者交換位置。就這樣依次地比下去。
這樣的話,第一趟就把最大的數排到了最後。
而每再比較一趟的時候,都排除已經生成的結果,比如第二趟,不會再比較最後乙個數(它已經是最大的了,當然如果比較也沒問題,浪費時間而已);第三趟,不會再比較最後兩個數。。。
每一趟都把最大的數排到當前範圍的末尾。
這樣迴圈下去,每一趟都會把當前範圍內最大的數扔到後面去。排序就完成了。
舉個公升序排序的例子:
對於這組數,第一趟,10與5比較,10 比5大,所以互換位置(5,10,3,11,9),10和3比較,10>3,所以互換位置(5,3,10,11,9),10與11比較,不用互換位置;11與9比較,互換位置(5,3,10,9,11),第一趟結束;
第二趟,由於11已經是最大的,那麼只剩下;5>3,所以互換位置(3,5,10,9);5<10,不用互換位置;10>9,互換位置(3,5,9,10),第二趟結束。
第三趟,只剩下,3<5,不用互換位置;5<9,不用互換位置,第三趟結束。
第四趟,只剩下,3<5,不用互換位置,第四趟結束。
此時由於只剩兩個數,本趟已經把兩個數較大的乙個放到了第二的位置,所以迴圈到此結束。
結果就是。過程中,每一趟都會把相鄰的兩個數中較大的換到後面,即每趟中,最大的數都會被置換到最後,就像乙個氣泡浮出水面一樣,越來越大,到出水時就是最大的。所以才叫氣泡排序。
3樓:單身一車行
氣泡排序時基於交換的一種排序方法。基本步驟是兩個相鄰的元素比較,如果前乙個比後乙個大,則兩者換位,一次比較,最後找出本次比較的最大者。
4樓:網友
相鄰元素逐個比較 符合條件則調換他們的順序 類似水中的氣泡乙個乙個冒上來。
氣泡排序也因此得名。
c語言中冒泡法排序數,c語言中冒泡法排序六個數
include int main c語言隨機產生50個數輸出,排序後再輸出 include include int main for int j 1 j 20 j for int i 1 i 20 i int temp if a i a i 1 temp a i a i 在c語言中怎樣表示一個數的 ...
c語言中用氣泡排序法排列任意輸入的數,用程式輸出從小到大的排列具體過程,謝謝
include void main printf the sorted numbers n for i 0 i 10 i printf d a i 這是我用手打的哈 希望對你有幫助 可以試試這樣寫!include define n 10 void main for i 0 i printf 5d a...
在C語言中如何用冒泡法,輸入人的序號和成績,對成績從大到小進行排序,輸出排序後的序號和成績
include int main for j 0 j 9 j for i 0 i 9 j i if a i 將學號和成 自績都交 bai換 printf the sorted is n for i 0 i 10 i 輸出du整理的資料 zhiprintf n return 0 這是 dao結果 c語...