No 2 氣泡排序

2021-09-20 04:14:07 字數 988 閱讀 6467

學習演算法打卡第二天!今天記錄一下學的「氣泡排序」,在寫上一節「桶排序」的時候,就在想我要是要將小數排序怎麼辦,或者要是排序的數的範圍在很大很大又怎麼辦?利用「桶排序」很浪費空間,浪費可恥!但是「氣泡排序」可以解決這些問題。

比如我們要將5個數按從大到小的順序進行排序,利用「氣泡排序」。首先將第一位和第二位進行比較,如果第一位比第二位小,就將它們交換,否則不交換,接著拿第二位和第三位進行比較,如果第二位比第三位小就交換,否則不交換,然後拿第三位和第四位進行比較,同樣如果第三位比第四位小就交換,否則不交換,最後拿第四位和第五位進行比較,比它小就交換,否則不,這就完成了第一趟比較,這時最後一位上的數就是最小的,按照上面的規則來第二趟,同樣從第一位開始,但是這時不需要和最後一位進行比較了,因為在上一趟完成時,最後一位已經是最小的數了,經過第二趟比較,產生的是第二小的數,排在第四位,依次經過第三趟,產生第三小的數,排在第三位,第四趟完成就比較完了,為什麼只要四趟就可以,因為第四趟完成之後相當於就剩乙個數了,那就不用比了,在這它就是王者。

#includeint main(){

int a[100],i,j,t,n;

scanf("%d",&n);//輸入乙個數,表示要排序的數的個數

for(i=1;i<=n;i++)//把n個數讀入陣列

scanf("%d",&a[i]);

//核心**:雙重巢狀迴圈

for(i=1;i<=n-1;i++){//n個數排序要比較n-1趟

for(j=1;j<=n-i;j++) {//經過i趟後,已有i個數排好序,不需要再和已排好序的數進行比較

if(a[j]「氣泡排序」的原理:每進行一趟比較只能讓乙個數歸位。對n個數進行比較,需要進行n-1趟比較,每一趟比較都從第一位開始,每次比較的都是相鄰的兩個數,已經排好的數無需進行比較。它的時間複雜度是o(n^2),核心部分是**中雙重的巢狀迴圈部分。當然也可以利用「氣泡排序」依分數高低把對應的名字輸出,利用乙個結構體即可。結構體,似乎是乙個很遙遠的名詞了,偷懶讓我健忘(捂臉),不過寫演算法讓自己也順帶複習了大一學的c。

氣泡排序2

氣泡排序 一組數中,相鄰的兩個數進行比較 交換,將最大 小 數交換至尾 首 部,即完成了一次氣泡排序 要想對n個數字進行排序,迴圈n次即可.如果真的不理解氣泡排序演算法,氣泡排序 360百科 主要 方式一 從頭向尾遍歷,將最大數 相對 沉入尾部 void bubblesort1 int arr,in...

2 氣泡排序

氣泡排序思想 氣泡排序 bubble sort 通過對排序序列從前到後依此比較相鄰元素的大小,發現逆序則交換,使值較大的元素逐漸向後移動。public class bubblesort 用來交換 int temp 0 boolean flag false 標識每一趟是否排序 for int i 0 ...

氣泡排序2

氣泡排序 一組數中,相鄰的兩個數進行比較 交換,將最大 小 數交換至尾 首 部,即完成了一次氣泡排序 要想對n個數字進行排序,迴圈n次即可.如果真的不理解氣泡排序演算法,氣泡排序 360百科 主要 方式一 從頭向尾遍歷,將最大數 相對 沉入尾部 void bubblesort1 int arr,in...