8種排序簡介

插入排序:

(1)直接插入排序:數據已經是排列好的(升序),將需要插入的數據從右開始比較,如果小於最右邊一個,就和前一個比較,直到找到比這個數還要小的,然後插入數據即可。

(2)折半插入排序:將一個數與數組中的平均值數相比,如果比平均數小,則將最大的左移一個,然後取平均值,如果比平均值大,則最大數向右移一個,接着取平均值,如此比較下去,知道最大值和最小值和平均值是一個數的時候,如果比平均值小,則這個數插入在平均值的左側。(裏面的最大值,最小值都是數組中的數據)

(3)希爾排序:是每次將數組分成若干個組,第一次是數組長度的一半個組,第二次是一半的一半,然後是一半的一半的一半。第一次將分組的數據比較好,第二次是在第一次的基礎上進行直接插入排序,也是從右開始,最後當分組是1的時候,即排序好了。

交換排序:

(4)冒泡排序:第一趟比較將第一個數和第二個比較,若第一個大則交換,第二個數和第三個比較,若第三個數大,第三個和第四個比較,以此類推,第一堂結束後將最大的數放到最底下,然後進行第二趟比較,也是從第一個開始和第二個比較,將大二大的數放到最底下,以此類推完成排序。

(5)快速排序:在數據序列中選擇一個第一個值作爲比較的基準值,每趟從數據序列的兩端開始交替進行,先從右端開始,將小於基準值的元素交換到序列前端,將大於基準值的元素交換到序列後端,介於兩者之間的位置成爲基準值的最終位置。序列被劃分成兩個子序列,再用同樣的方法分別對兩個子序列進行排序,直到子序列的長度爲1,完成排序 。

(6)直接選擇排序:第一堂比較標記出最小的放入有序序列,也是第一個和第二個比較,標記出較小的,然後較小的和下一個比較,第一堂完成最小的選出來,第二趟選出第二小的,直到最後都排出來。

(7)堆排序:創建大根堆,首先將數據排列成完全二叉樹,根據根節點大於左右子節點進行交換,然後把根節點與最初的數組中最後一個交換,接着用根節點大於左右子節點進行交換,得出第二個根節點,接着與最初的數組中倒數第二個交換,以此類推即可。

(8)歸併排序:將兩個或兩個以上的有序子序列歸併爲一個有序序列,兩個序列已經是有序的a,b,a中第一個和b中第一個比較,較小的放入新的序列中,然後從拿出序列的那個中取出第二個和沒有拿出序列的比較,較小的放入新的序列,一次類推。

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