iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
自我挑戰組

C語言救救我系列 第 22

Day22-"氣泡排序法"

我們一般會將需要排序的資料存放在陣列中,因此今天要介紹氣泡排序演算法的目標就陣列資料的結構。

氣泡排序法是一些排序法中較為簡單容易的排序方法,因此他在效率上表現也較為普通。所謂的氣泡排序法就是將相鄰的兩資料互相比較,比較後若發現後者比前者小,就將兩著互換,以此類推直到全部排序完成。接下來看這個例子{34,27,56,22,85}來看這個陣列總共需要更換幾次。

第一次比較,將34跟27做比較,發現27較小因此將27和34互換得到{27,34,56,22,85}

第二次比較,將34跟56做比較,發現34比較小因此無需做更改,得到{27,34,56,22,85}

第三次比較,將56跟22做比較,發現22較小因此將22和56互換得到{27,34,22,56,85}

第四次比較,將56跟85做比較,發現56比較小因此無需做更改,得到{27,34,22,56,85},此時已將85排好,他是最大的一個。

第五次比較,將27跟34做比較,發現27比較小因此無需做更改,得到{27,34,22,56,85}

第六次比較,將34跟22做比較,發現22較小因此將22和34互換得到{27,22,34,56,85}

第七次比較,將34跟56做比較,發現34比較小因此無需做更改,得到{27,22,34,56,85},此時56也完成排序

第八次比較,將27跟22做比較,發現22較小因此將22和27互換得到{22,27,34,56,85}

第九次比較,將27跟34做比較,發現27比較小因此無需做更改,得到{22,27,34,56,85},此時34也完成排序

第十次比較,將22跟27做比較,發現22比較小因此無需做更改,得到{22,27,34,56,85},最後將22與27比較完就是所有排序了。

我們會發現5筆資料排序時,總共會有4個回合,每個回合會排序完該回合的最大值,由上述例子得知,我們四個回合分別比較了10次(4+3+2+1)。由此我們可以知道N筆資料需要有(N-1)次,以此類推知道第二筆資料為(N-2)直到最後一筆為1,因此我們可以得知最多需要N(N-1)/2次比較。

/images/emoticon/emoticon29.gif

Day22就到這啦BYE~


上一篇
Day21-"排序、搜尋介紹"
下一篇
Day23-"其他排序方法"
系列文
C語言救救我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言