堆排序和歸併排序

2021-07-28 23:23:22 字數 574 閱讀 5108

極少涉及,在此就不再研究**了!

堆排序

原理

把待排序的元素按照大小在二叉樹位置上排列,排序好的元素要滿足:父節點的元素要大於等於子節點;這個過程叫做堆化過程,如果根節點存放的是最大的數,則叫做大根堆,如果是最小的數,則叫做小根堆,可以把根節點拿出來,然後再堆化,迴圈到最後乙個節點。

時間複雜度

平均:o(nlog2n)

最差:o(nlog2n)

空間複雜度

o(1)

穩定性

不穩定歸併排序

原理

將兩個或多個有序表合併成乙個新的有序表。

時間複雜度

平均:o(nlog2n)

最差:o(nlog2n)

空間複雜度

o(n)

穩定性穩定

歸併排序和堆排序

歸併排序的演算法我們通常用遞迴實現,先把待排序區間 s,t 以中點二分,接著把左邊子區間排序,再把右邊子區間排序,最後把左區間和右區間用一次歸併操作合併成有序的區間 s,t 桶排序法,非常耗空間。規定陣列中元素的最大值不超過陣列的長度,否則要先求出陣列元素的最大值後,才能指定空桶的個數,要求待排序陣...

堆排序,歸併排序

1.介紹 對簡單的選擇排序的一種改進,改進效果非常明顯,每次在選擇最小記錄的同時,並根據比較結果對其他記錄做出相應的調整,那麼排序效率就會提高很多。定義 將待排序的序列構造成乙個大頂堆,此時,整個序列的最大值就是堆頂的根節點。將它移走 其實就是將其與堆陣列的末尾元素進行交換,此時末尾元素就是最大值 ...

手寫堆排序和歸併排序

手動實現堆排序,使用大根堆實現 從小到大排序 完成在陣列 low,high 的範圍內,對在位置low上的節點向下進行調整 void shift int nums,int low,int high else break nums i tmp void heap sort int nums,int n ...