c語言如何用冒泡法對固定的數從大到小排序輸出?

胡俊


冒泡法其實就是循環把大的數(或者小的數)往上推

冒泡法是非常經典的數組排序算法,只需要兩個循環語句就可以把數組按從大到小或者從小到大排好。就像冒泡泡一樣,把小的(或者大的)往上冒,就可以得到我們需要的結果了。

冒泡法原理

以從大到小排序排序為例

  • 先從最前面兩個數開始,比較大小,如果第一個數比第二個數小,就交換位置,否則保持位置不變;接著比較第二個數和第三個數,如果第二個數比第三個數小,就交換位置,否則保持位置不變;依此類推,最小的數就到了最頂端了;
  • 接著進行第二輪冒泡,同樣是從前面的兩個數開始比較,因為經過第一輪冒泡後,最小的數已經在最上面的,第二輪冒泡到倒數第二個就可以了。
  • 由此可見,N個數的數組,需要進行N-1輪冒泡,第一輪冒泡要進行N-1次比較,第二輪進行N-2次冒泡,依此類推。

冒泡法C語言程序

以C語言為例,我們可以用兩個for循環實現冒泡法算法。當然除了用for還可以用while哦,大家可以思考一下。

冒泡法排序是不是很有意思呢?如有錯漏,歡迎批評指正哦!

歡迎關注@電子產品設計方案,一起享受分享與學習的樂趣!關注我,成為朋友,一起交流一起學習

  • 記得點贊和評論哦!非常感謝!

電子產品設計方案


冒泡算法的思路: 正如象形,每次冒一個泡泡,又如挑雞蛋。先循環一次,找出最小或最大的那個元素(未必是數值,比較規則按需要而定,要懂靈活),放到一端,那麼這個已找到的就不用再管了,再把剩下的按同樣方法找一次,一直找完。這裡要注意一點就是,由於每次都把已經找到的元素依次排好,那麼剩下需要挑揀的就越來越少,在算法上體現這一點。


弄懂了這個基本思路,剩下就是你的創造性。比如,對數據量大的情形,可以分而治之,按一定的比例把數據分割為若干片,分別排序(對某些支持並行計算的環境而言這是好主意),每片都排好後就可以考慮插入歸併了。不是所有算法都可以在內存中完成的,外排序更常見,都要採用分割法。


總之,無論思考甚麼算法,都要構思一個模型,想像手工如何操作,把每一個步驟都考慮清楚,看是否合理,最後才動手編碼。路子有樣板,但具體無定型,靠背具體算法代碼是不夠出來對付現實的。


TonyDeng


冒泡排序的原理就是每一輪遍歷數據都將本輪的最大數拖動到末尾,遍歷完排序也完成了。

排序代碼截圖如下:

調用排序函數:

輸出結果:1 2 3 4 5 7 9 15


碼中尋樂


於少數的數字的排列,可以通過簡單的if嵌套語句便可將所有情況列舉出來;

但是一旦要比較的數字較多,這種方法便缺少了可執行性;

因此,我們可以採用數組的思想來進行編程;

此處以:將10個數按從小到大排列輸出 舉例:

#include"stdio.h"

#define N 10

int main ()

{

int a[N];

int i,j,t;

printf("Please input %d numbers:\\n\


分享到:


相關文章: