國產資料庫40年大盤點,願這盛世如您所願!
阿新 • • 發佈:2020-12-19
氣泡排序
文章目錄
引言
演算法重在思想,掌握其核心思想,然後才能熟練使用。
學校軍訓期間,軟體學院的軍訓
教官:列隊,然後迅速分為兩隊,男生一隊,女生一隊,按照身高從低到高排,但是需要保持原來的佇列,最多一下兩個人換位置,不然會出現混亂的場面。
學員:我應該站在哪兒?
教官:最後一個人,跟你前面的比一下,誰高?
最後一個學員說:報告教官,我前面的人高;
教官:換位置;
學員:是
學員:接下來呢:
教官:還要我教你?繼續跟你前面的人比呀;
然後一輪下來,前面站著最矮的人,
教官:給你們三分鐘,給我排好。
。。。
學員:難度這就是傳說中的氣泡排序?教官真厲害。
一、演算法思想
每次比較相鄰兩數,順序錯則交換兩數。
二、實現步驟
1.步驟流程
1.選中兩數
2.比較兩數,小則向前移動
3.直到與最後一個數比較
4.重複n-1趟
注:這裡一趟會比較8次
2.程式碼實現
程式碼如下(C):
#include<stdio.h> int main() { int a[100]; int 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++)//氣泡排序核心演算法;雙重迴圈 { for(j=1;j<=n-i;j++) { if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(i=1;i<=n;i++) { printf("%d ",a[i]); } getchar();//用於暫停程式,方便檢視結果 return 0; }
3.演算法分析
時間複雜度:O(N*N)
這個的時間複雜度是非常高的
總結
氣泡排序,核心就是雙重迴圈;