C 語言實作氣泡排序法(Bubble Sort) - Justin
文章推薦指數: 80 %
C 語言實作氣泡排序法(Bubble Sort). 排序在演算法裡面算是一個很基本的問題,雖然現在各種強大的程式語言都會自帶排序演算法的函 ...
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWriteC語言實作氣泡排序法(BubbleSort)排序在演算法裡面算是一個很基本的問題,雖然現在各種強大的程式語言都會自帶排序演算法的函式庫,但總還是會遇到需要自己刻一個排序演算法的時候。
這篇會說明氣泡排序法(BubbleSort),我個人覺得這是最直觀的一個排序演算法,選擇使用C語言實作的原因是因為它不像其他程式語言那麼強大有很多方便的函式庫可以使用,加上我好久沒有寫C了,所以藉這個機會來複習一下如何用C寫一個氣泡排序法(BubbleSort)。
氣泡排序法(BubbleSort)概念給定一組數列,對這個數列進行巡訪,當目前這個數字大於後面數字時,就將這兩個數字交換,如此一來,當這次巡訪完之後,最大的數字就會移到最後一個。
接著,再從頭開始重新巡訪此數列,重複剛剛的動作,第二輪巡訪完之後,就會將第二大的數字移到倒數第二個,不斷重複此動作,直到第一個數字就是我們的移動目標位置,這樣整個數列就由小到大排序完成了。
進階:若其中某一輪巡訪數列後發現沒有任何數字需要做交換,就可以直接停止巡訪數列了。
氣泡排序法(BubbleSort)實作編譯並執行上面的程式碼後會有以下結果:beforesorting:24173921326510aftersorting:25101317242639分析時間複雜度:最壞情況是一開始的數列是由大到小依序排列,如此一來要走n輪的巡訪(n是數列中的個數),每一輪要兩兩比較n次,時間複雜度是O(n^2)。
最好情況是一開始的數列是由小到大依序排列,這樣還是需要走一輪巡訪,兩兩比較共n次,所以時間複雜度是O(n)。
空間複雜度:演算法會使用到的空間不會因為要排序的個數而有所改變,所以空間複雜度為O(1)。
若數列中有兩個一樣的數字,那麼在排序前這兩個數字的排列順序在排序之後依然一樣,則稱此排序為穩定排序,氣泡排序法(BubbleSort)就是一個穩定排序。
MorefromJustinFollowIlovebeingasoftwaredeveloper.Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedJustin7FollowersIlovebeingasoftwaredeveloper.FollowMorefromMediumVickyMoonantofeelAngelNavarroDefeatFrankLoveTableManners — FrankLoveonRelationshipsErinE.E.CrazyHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1Bubble Sort (With Code in Python/C++/Java/C) - Programiz
In this tutorial, you will learn about the bubble sort algorithm and its implementation in Python...
- 2C 語言排序演算法實作整理:泡沫排序、快速排序等 - GT Wang
若要對一連串的元素(陣列)做排序的話,有很多種實作方式,常見的排序方法有:泡沫排序法(bubble sort)、插入排序法(insertion sort)、快速排序 ...
- 3【Day 23】Bubble sort 範例 - iT 邦幫忙
C 語言的簡單入門系列第23 篇. hebe880123. 9 個月前‧ 540 瀏覽. 1. 不知道大家對於Bubble sort 的程式有沒有甚麼問題呢? 今天,我們就來討論一下程式碼!
- 4[C++] 氣泡排序法(Bubble sort)
[C++] 氣泡排序法(Bubble sort). 簡單記錄一下自己的理解. 氣泡排序的意思,wiki 裡面是這麼說明: 又稱為泡沫排序,是一種簡單的排序演算法。
- 5Bubble Sort Algorithm - GeeksforGeeks
Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elem...