胡俊
冒泡排序的原理就是每一輪遍歷數據都將本輪的最大數拖動到末尾,遍歷完排序也完成了。
排序代碼截圖如下:
調用排序函數:
輸出結果:1 2 3 4 5 7 9 15
碼中尋樂
冒泡法其實就是循環把大的數(或者小的數)往上推
冒泡法是非常經典的數組排序算法,只需要兩個循環語句就可以把數組按從大到小或者從小到大排好。就像冒泡泡一樣,把小的(或者大的)往上冒,就可以得到我們需要的結果了。
冒泡法原理
以從大到小排序排序為例
- 先從最前面兩個數開始,比較大小,如果第一個數比第二個數小,就交換位置,否則保持位置不變;接著比較第二個數和第三個數,如果第二個數比第三個數小,就交換位置,否則保持位置不變;依此類推,最小的數就到了最頂端了;
- 接著進行第二輪冒泡,同樣是從前面的兩個數開始比較,因為經過第一輪冒泡後,最小的數已經在最上面的,第二輪冒泡到倒數第二個就可以了。
- 由此可見,N個數的數組,需要進行N-1輪冒泡,第一輪冒泡要進行N-1次比較,第二輪進行N-2次冒泡,依此類推。
冒泡法C語言程序
以C語言為例,我們可以用兩個for循環實現冒泡法算法。當然除了用for還可以用while哦,大家可以思考一下。
冒泡法排序是不是很有意思呢?如有錯漏,歡迎批評指正哦!
歡迎關注@電子產品設計方案,一起享受分享與學習的樂趣!關注我,成為朋友,一起交流一起學習
- 記得點贊和評論哦!非常感謝!
電子產品設計方案
冒泡算法的思路: 正如象形,每次冒一個泡泡,又如挑雞蛋。先循環一次,找出最小或最大的那個元素(未必是數值,比較規則按需要而定,要懂靈活),放到一端,那麼這個已找到的就不用再管了,再把剩下的按同樣方法找一次,一直找完。這裡要注意一點就是,由於每次都把已經找到的元素依次排好,那麼剩下需要挑揀的就越來越少,在算法上體現這一點。
弄懂了這個基本思路,剩下就是你的創造性。比如,對數據量大的情形,可以分而治之,按一定的比例把數據分割為若干片,分別排序(對某些支持並行計算的環境而言這是好主意),每片都排好後就可以考慮插入歸併了。不是所有算法都可以在內存中完成的,外排序更常見,都要採用分割法。
總之,無論思考甚麼算法,都要構思一個模型,想像手工如何操作,把每一個步驟都考慮清楚,看是否合理,最後才動手編碼。路子有樣板,但具體無定型,靠背具體算法代碼是不夠出來對付現實的。
TonyDeng
但是一旦要比較的數字較多,這種方法便缺少了可執行性;
因此,我們可以採用數組的思想來進行編程;
此處以:將10個數按從小到大排列輸出 舉例:
#include"stdio.h"
#define N 10
int main ()
{
int a[N];
int i,j,t;
printf("Please input %d numbers:\\n\