[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.FollowMorefromMediumAnjalikumawatinCodeXOperatorOverloadinginC++AllAboutCodeC++ArraysStudyGuideandPracticeQuestionsCorleyComputerRepairCLibrariesandTheirTypeshimanshumotwaniyield:theC#iteratorHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1[C++] 氣泡排序法(Bubble sort)
氣泡排序的意思,wiki 裡面是這麼說明: 又稱為泡沫排序,是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序 ...
- 2(1)冒泡排序(Bubble Sort) · 常见排序算法 - 看云
最近整理了一些常见的排序算法,资料基本上都来自网上,大部分参考了维基百科,分析了常见算法的原理,并举例分步说明,有的还给出了排序动画演示,但没有涉及算法复杂 ...
- 3冒泡排序 - MBA智库百科
冒泡排序(Bubble Sort)冒泡排序是一種電腦科學領域的常用的較簡單的排序演算法。如何設計出複雜度儘可能低且函數復用性高的演算法是演算法效率和通用性的關鍵內容。
- 4冒泡排序
冒泡排序(英语:Bubble sort)是一种简单的排序算法。由于在算法的执行过程中,较小的元素像是气泡般慢慢「浮」到数列的顶端,故叫做冒泡排序。
- 5DSA - 冒泡排序(Bubble Sort)_数据结构和算法 - WIKI教程
冒泡排序从前两个元素开始,比较它们以检查哪一个更大。.现在我们应该研究一下泡沫排序的一些实际方面。. 我们进一步假设swap函数交换给定数组元素的值。