資料結構聯絡 15-希爾排序 選擇排序

來源:互聯網
上載者:User

shell排序,是插入排序的改進演算法,採用分組插入。

直接上例子吧,不懂插入排序的見我的博文插入排序。

如例子     

9  1  5  8  3  7   2  4  5

取梯度:1, 5, 19, 41, 109......

因為 number of element is 9< 19.所以梯度取5和1。

第一回合:i=0,取9和7(i+梯度5得到元素7),

9,7 插入排序後得7,9

所以原數組變為:

7  1   5   8   3   9   2   4   5

第二回合:i=1,取1和2,

1,2插入排序後得1,2

所以原數組變為:

7  1  5  8  3  9  2  4  5

依次類推最後得:

7  1  4  5  3  9  2  5  8

接下來梯度取1,此時就是插入排序,經過之前的調整,小元素相對於之前往前移動了,而大元素往後移動了,這就是shell排序魅力之所在。

代碼類似插入的,很簡單,就不寫了,給個別人的連結:shell排序  複雜度為O(N*(lgN)^2);因為分組的結果,導致相同的數可能順序打亂,所以shell排序為不穩定的排序。

選擇排序:包括堆排序和直接(簡單)選擇排序。

堆排序見 我的部落格 。

直接選擇排序很簡單。

每次選擇一個最小的數,放在左邊。

具體過程如下:

5  3  2  4  8

第一回合:尋找到最小元素 2,2和5交換

2  3   5   4   8

第二回合:在  3  5   4  8裡找到最小值  3

數組變為

2   3   5   4  8

依次類推,最後成為:

2   3   4   5   8

簡單選擇排序的複雜度為:O(N*N)。穩定的排序。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.