(1)歸併排序
3.區別與聯絡:遞迴是從未知推到已知,相當於把未知的東西壓入棧,等到可以算出結果了,就一步一步出棧。迭代是從已知到未知,從已知的東西一步一步推至目標。遞迴與迭代就好像一對逆元。遞迴的**更加清晰,但開銷更大,也更容易出錯,除錯較困難;而迭代的**編寫更困難,但速度和開銷較小。
4.空間占用:歸併排序不是就地排序,需要乙個輔助空間來儲存每一階段的排序結果。
5.屬於比較排序。
(2)堆排序
堆排序也屬於比較排序。
(3)快速排序
快速排序屬於比較排序,就地排序。
(4)計數排序
(5)希爾排序
希爾排序屬於就地排序。
總結:排序演算法名稱
時間複雜度
空間占用
使用範圍
排序型別
歸併排序
o(nlogn)
非就地排序
所有資料型別
比較排序
堆排序o(nlogn)
就地排序
所有資料型別
比較排序
快速排序
平均下界o(nlogn)
就地排序
所有資料型別
比較排序
計數排序
o(n)
非就地排序
自然數(可擴充套件至整數)
非比較排序
希爾排序
希爾增量o(n2)
就地排序
所有資料型別
比較排序
排序演算法小結
1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...
排序演算法小結
演算法過程 假設乙個無序的序列,該演算法將其分成兩部分,前一部分已經完成排序 有序,一開始時只有乙個元素 後一部分任然無序,將後面序列選擇第乙個插入到前面的有序序列,如此直到所有完全有序。複雜度 最簡單的即為,整個序列原來即有序,按照一種最 省事 的方式,我們僅需比較n 1次即可。最複雜的情況,應該...
排序演算法小結
經典的排序演算法有十種,分別是 選擇排序 插入排序 希爾排序 氣泡排序 堆排序 合併排序 快速排序 計數排序 基數排序和桶排序。下面對這些演算法分類如下 選擇排序 簡單選擇排序 堆排序 插入排序 直接插入排序 二分插入排序 希爾排序 快速排序 快速排序 隨機化快速排序 線性時間排序 計數排序 基數排...