我的軟考之路(六)——資料結構與演算法(4)之八大排序

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   使用   ar   資料   2014   

        排序是編程的基礎,在程式中會常常使用,好的排序方法能夠協助你提高程式執行的效率,所以學好排序,打好基礎,對於程式的最佳化會手到擒來。不管你的技術多麼強,假設沒有基礎也強不到哪去。

       不多說了,我們直接進入今天的主題。

                                                      

    總有人說排序非常難,可是我總認為非常easy,我們僅僅須要瞭解基本思想就好了,通過簡單的範例來加深理解。


1、直接插入排序


(1)簡單介紹:直接插入排序,從字面意思能夠看出,直接插入資料完畢排序。

(2)基本思想:在插入第i個數時,如果前i-1數已經排好序了,僅僅須要將第i個數插入到i-1中,使得這i個數也是順序的。

(3)比如:

                              


2、希爾排序(Shell排序)


(1)簡單介紹: 希爾排序又稱為縮小增量排序,是對直接插入排序方法的改進。

(2)基本思想:將整個序列分成多個子序列,然後分別進行直接插入排序,直到整個序列中的全部數基本有序時,再對總體進行一次直接插入排序。

(3)比如:

                             


3、簡單選擇排序


(1)簡單介紹:簡單選擇排序也叫直接選擇排序,事實上說白了跟直接插入排序的道理特別簡單,效率低。

(2)基本思想:首先在 n個數中選擇一個最小的數,並將它從中刪除,作為新的一組數的第一個;再在剩下的數中選擇最小的數,將它從中刪除,作為新的一組數的第二個。。。。如此重複,直到排序完畢,最後得到一組從小到大排序的數。

(3)比如:

                          


4、堆排序


(1)簡單介紹:堆排序是一個相當實用的排序技術,特別適用於對大量的記錄進行排序。同一時候,堆排序也是對簡單選擇排序的改進。

堆的定義:n個元素的序列{K1,K2,...,Kn}當滿足下列關係時,稱為堆:Ki≤K2i且Ki≤K2i+1或者Ki≥K2i且Ki≥K2i+1。注意:堆樹必須是一顆全然二叉樹。

(2)基本思想:利用堆積樹這樣的資料結構所設計的一種排序,能夠利用數組的特點高速的定位指定索引的元素。

最大堆:父結點大於或等於兒子結點

                         

最小堆:父結點小於或等於兒子結點

                         

(3)比如:

將序列{20,60,26,30,36,10}調整為遞增序列。

1、首先將資料建立全然二叉樹,填充規則是按層次遍曆將資料一一填入,最後構建最小堆;

                         

2、提取堆頂並調整刪除隊頂後的元素為新堆;

3、反覆第2步,直到堆空;

                        

4、每次提取的堆頂依次排序即為遞增序列。

                     


5、冒泡排序


(1)簡單介紹:冒泡排序,就跟水裡的物體一樣,小的往上浮,大的往下沉。

(2)基本思想:將數組垂直排列,取出最後一個元素逐個向上交換,得到大數(小數),繼續步驟一的操作,直到排序完畢。

(3)比如:

                       


6、高速排序


(1)簡單介紹:高速排序是眼下內部排序中速度最快的一種排序演算法。

(2)基本思想:選取一個資料(一般是數組的第一個數)作為重要資料,然後將全部比它小的數都放在它前面,全部比它大的數都放在它後面,這個過程稱為一趟高速排序,再從分開的部分選取基準數,進行分組劃分,反覆運行,直到完畢。

(3)比如:

                        


7、歸併排序 


(1)簡單介紹:歸併排序又稱為二路合併作業,使用合併作業完畢排序的演算法。

(2)基本思想:將兩個或兩個以上的有序表合并成一個新的有序表,最後將全部的有序表合成一個總體有序表。

(3)比如:

                       


8、基數排序


(1)簡單介紹:前面介紹的排序方法都是對元素進行的,基數排序是對元組進行的。

(2)基本思想:從低位到高位依次對待排序的數進行分配和收集,經過d趟分配和收集,就能夠得到一個有序序列。

(3)比如:

                     


排序演算法對照

                


總結

          

         人處理映像的能力是最強的,相信你通過這一張張的圖,你已經學會了這八種排序。



興許部落格的更新列表,敬請期待。

      我的軟考之路(一)——開篇(已更新)

      我的軟考之路(二)——J2SE宏觀總結(已更新)

      我的軟考之路(三)——資料結構與演算法(1)之線性表(已更新)

      我的軟考之路(四)——資料結構與演算法(2)之樹與二叉樹(已更新)

      我的軟考之路(五)——資料結構與演算法(3)之圖(已更新)

      我的軟考之路(六)——資料結構與演算法(4)之八大排序(已更新)

      我的軟考之路(七)——資料結構與演算法(5)之尋找(已更新)


我的軟考之路(六)——資料結構與演算法(4)之八大排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.