一、常見算法之排序算法簡單描述

轉載自:https://www.cnblogs.com/bulingpan/p/6416351.html

一、常見算法之排序算法簡單描述

1、冒泡排序

基本思想:兩兩比較,小的上浮,大的下沉。

算法描述:對一組數據,兩個兩個的依次比較,將小數放到前面,大數放到後面(小的上浮,大的下沉)

第一次排序:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。

第二次排序:仍從第一對數開始比較(因爲可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。

 

時間複雜度: O(n^2)

 

2、選擇排序

基本思想:遍歷選擇,位置交換

算法描述:對一組數進行遍歷,第一次遍歷選擇出最小的數,與下標爲0的數進行交換,第二次從下表爲1出開始遍歷,從餘下的數中選擇最小的數與當前下標爲1的數進行交換,依次下去

 

時間複雜度:O(n^2)

 

3、插入排序

插入排序主要分爲:直接插入排序和希爾排序

 

(1)直接插入排序

基本思想:有序列和無序列,從無序列中取數插到有序列中相對應的位置

算法描述:將一組數分爲兩塊,一塊是有序列,一塊是無序列,有序列是按照順序排列的,從無序列中取出一個數a,對有序列進行遍歷,找到數a在有序列中應在的位置並插入到有序列中,依次循環。

 

時間複雜度:O(n^2)

 

(2)希爾排序

基本思想:選取關鍵字(增量),分組,插入排序

算法描述:第一輪:將一組數通過關鍵字,分爲好幾個小組,對每個小組進行插入排序,第二輪:將第一輪後的結果通過關鍵字再次分爲好幾個小組,在對每個小組進行插入排序操作,依次執行……直到關鍵字爲1爲止

關鍵字(增量)的取值規則:第一次取總長度的一半,第二次取一半的一半,依次累推直到1爲止,

 

時間複雜度:O(nlogn)

 

4、 歸併排序

基本思想:利用分而治之的思想,先分散,在合併

算法描述,第一輪:將數組中的元素兩兩排序合併,第二輪,在第一輪的基礎上,在將小組進行兩兩排序合併,依次類推,直到整個數組排序完成。

時間複雜度:O(n log n)

 

5、堆排序

基本思想:堆本質是一顆完全二叉樹(大頂堆,和小頂堆),構造初始堆,最大最小交換,輸出最大值,重新調整大頂堆

算法描述:1、首先構造初始堆,即完全二叉樹,父節點大於左孩子節點並且大於右孩子節點;

2、將最小值和最大值交換位置,輸出最大值,然後將預先的數再次調整爲大頂堆,依次輸出。

時間複雜度:O(n log n)

 

6、 快速排序

基本思想:分治法,1、將原問題分解爲若干個規模更小但結構與原問題相似的子問題。

2、遞歸地解這些子問題,

3、然後將這些子問題的解組合爲原問題的解。

算法描述:找一個標準數,將比這個數小的放在左邊,將比這個數大的放到右邊,對這兩組數再次分而治之,找中間的數,將比這個數小的放在左邊,將比其大的放到右邊,依次類推 直到排序完成爲止。

時間複雜度:O(n log n)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章