[C++] 氣泡排序法(Bubble sort)
文章推薦指數: 80 %
氣泡排序的意思,wiki 裡面是這麼說明: 又稱為泡沫排序,是一種簡單的排序演算法。
它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序 ...
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite[C++]氣泡排序法(Bubblesort)簡單記錄一下自己的理解氣泡排序的意思,wiki裡面是這麼說明:又稱為泡沫排序,是一種簡單的排序演算法。
它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。
走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。
[註1]它的運作原理是這樣(以由小排到大為例子):1.每次都拿相鄰的兩個數字進行比較,如果第一個數字比第二個數字大,就把兩個數字交換。
假設有個陣列裡面有-3,6,5,-1,0,9,3首先他會先比較前面的-3跟6:因為-3沒有大於6,所以並不會交換。
接下來則會繼續比較6跟5:因為6有比5大,所以會進行交換,就會變成這樣:2.依序兩兩相比,當最後的兩個數字比較過後,可以確定最後的數字一定是最大的。
比較的過程會像是這樣:所以最後的數字9會是這個陣列裡面最大的。
3.再從第一個數字開始兩兩相比,但這次處理範圍就不包括剛剛已經確定的最大的數字(9)了。
4.依照這樣的作法,到最後處理範圍只剩第一個數字跟第二個數字,比完後排序就結束了。
結果會像是這樣:簡單範例:(以C++為例)intA[]={-3,6,5,-1,0,9,3};inti,j,tmp;intn=sizeof(A)/sizeof(int);for(i=n-1;i>0;i--){for(j=0;j<=i-1;j++){if(A[j]>A[j+1]){tmp=A[j];A[j]=A[j+1];A[j+1]=tmp;}}}首先,假設我有一個陣列裡面放著-3,6,5,-1,0,9,3n是這個陣列的長度,長度是7。
我們從小區塊開始看:if(A[j]>A[j+1]){tmp=A[j];A[j]=A[j+1];A[j+1]=tmp;}這裡面在做的事情,是把陣列裡的兩個數字進行比較,當第一個數字大於第二個數字,就會進行交換。
接著設定j迴圈的範圍“i-1”,這個會決定要處理的陣列範圍:for(j=0;j<=i-1;j++){if(A[j]>A[j+1]){tmp=A[j];A[j]=A[j+1];A[j+1]=tmp;}}根據上面運作原理的說明,我們知道每比較完一輪,陣列處理的範圍就會減少一個數字,所以我們可以透過改變i的值決定j迴圈的範圍,同時也決定了陣列的處理範圍。
因此我們可以加上i迴圈決定i的值:for(i=n-1;i>0;i—){for(j=0;j<=i-1;j++){if(A[j]>A[j+1]){tmp=A[j];A[j]=A[j+1];A[j+1]=tmp;}}}i=n-1,代表第一次j迴圈會處理的陣列範圍是n-1每跑完一輪就減1,直到i不大於0,排序就結束了。
氣泡排序的介紹大致上是這樣,以上是對於氣泡排序的理解簡單做個紀錄,若有任何想法或意見非常歡迎提出來~[註1]Wiki(氣泡排序):https://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8FMorefromMartinFollowRecordmylifeandwork.Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedMartin13FollowersRecordmylifeandwork.FollowMorefromMediumBipsmediumWhileLoopinCwithExampleCanYükselBrieflyTheImportanceOfInterfacesYEH-HSIN-LEEStaticlibrariesinC배우는자(LearnerOfLife)ProgrammingDiaries — Day1 — StartingC#HelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1演算法的應用 - 7
排序的方法有很多種,其中以泡沫排序法最為簡易學。所謂泡沫排序(bubble sort) 是將兩相鄰的資料相互做比較,若比較發現次序不對,則將兩資料互換,依次由上往下比,而結果 ...
- 2Bubble Sort 泡泡排序法 - Cedric's 學習備忘錄- 痞客邦
泡泡排序法的原理是將一組數字中的第一位與後一位相比較,若後一位數字較大,則位置對調,再將第二位數與第三位數做比較,若後一數字較大, ...
- 3【Day21】[演算法]-排序Sort & 氣泡排序法Bubble Sort - iT 邦幫忙
氣泡排序法(Bubble Sort)又稱交換排序法,原理是從第一筆資料開始,逐一比較相鄰兩筆資料,如果兩筆大小順序有誤則做交換,反之則不動,接者再進行下一筆資料比較,所有 ...
- 4氣泡排序法(Bubble Sort) - 小殘的程式光廊
氣泡排序法(Bubble Sort) · 比較相鄰的兩個元素,若前面的元素較大就進行交換。 · 重複進行1的動作直到最後面,最後一個元素將會是最大值。 · 重複進行1,2的 ...
- 5[C++] 氣泡排序法(Bubble sort)
氣泡排序的意思,wiki 裡面是這麼說明: 又稱為泡沫排序,是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序 ...