常用排序算法總結。

1.冒泡排序:第一趟氣泡排序的結果,使得最大的關鍵字被安排到最後一個位置,第一趟的結果使得第二大的結果安排到倒數第二個位置。每次都通過比較交換如果前面的比後面的大則交換位置。時間複雜度n的平方。穩定的

2.快速排序:是冒泡排序的一種改進,基本思想是通過一趟排序將待排序的記錄分成兩部分,其中一部分記錄的關鍵字都比另一部分的關鍵字小。讓後分別對兩部分再進行快速排序以達到整個序列有序。因爲只有在一趟排序結束時,即low=high的位置纔是樞紐的位置。從後面找比樞紐記錄小的移到低端。前面找比樞紐大的移到高端。時間複雜度nlogn。不穩定。

3.選擇排序:沒一趟在n-(i-1)個記錄中選取關鍵字最小的記錄作爲有序序列的第i個元素。(第i個位置的前面有i-1個元素,第i個元素的後面有n-(i-1)個元素。)時間複雜度:n的平方。

4.堆排序:大頂堆:完全二叉樹所有非終端節點的值均不小於其左右孩子的值。

如何構造堆(以大頂堆爲例子):將序列看成一個完全二叉樹,則最後一個非終端節點是n/2向下取整。所以篩選從這個位置開始。如果該節點不滿足值均不小於左右孩子的值,則通過和左右孩子交換來調整滿足條件。調整的過程中如果破壞了其他分支的堆結構要繼續進行調整。

如何輸出堆頂元素後,調整剩餘元素成爲一個新的堆。

輸出堆頂元素,以堆中最後一個元素替代之此時根節點的左右子樹均爲堆,則僅需自上至下調整即可。(不穩定)

 

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