排序演算法小結

2021-06-23 07:14:17 字數 1061 閱讀 1992

經典的排序演算法有十種,分別是:選擇排序、插入排序、希爾排序、氣泡排序、堆排序、合併排序、快速排序、計數排序、基數排序和桶排序。

下面對這些演算法分類如下:

選擇排序:簡單選擇排序、堆排序

插入排序:直接插入排序、二分插入排序、希爾排序

快速排序:快速排序、隨機化快速排序

線性時間排序:計數排序、基數排序、桶排序

其他:氣泡排序、合併排序

分析演算法的效能,主要是分析其時間複雜度,在分析排序演算法的時候,只要涉及到劃分和二分,只要劃分上面不出現一邊為空的情況,時間複雜度就會有lgn,但並不一定就是o(lgn),在進行排序演算法的比較時,往往還要看演算法的穩定性,穩定性就是考察在排序過程中,關鍵值相等的兩個元素的相對(先後)位置在排序結束後是否會保持不變,如果不變則穩定,否則排序演算法是不穩定的,通常情況下,如果排序過程中只是相鄰元素進行交換,則演算法是穩定的,如果交換的元素之間有一定的區間跨度,則是不穩定的。非線性時間排序都是比較排序,即是通過元素之間的相互比較來確定順序位置的,而線性時間排序則不是比較排序,但是線性時間排序有一定的侷限性,元素關鍵值的大小必須滿足一定的要求,在乙個合適範圍和分布之下使用效果較好,而比較排序往往也是原地排序,非比較排序則需要較多的額外空間來儲存元素,因而非比較排序都不是原地排序。

這些排序排序演算法的時間複雜度,穩定性,是否比較排序,是否原地排序等特性總結如下:

排序名稱

時間複雜度

穩定性是否比較排序

是否原地排序

簡單選擇排序

o(n^2)

不穩定是

是堆排序

o(nlgn)

不穩定是

是直接插入排序

o(n^2)穩定是

是希爾排序

o(n^1.5)

不穩定是

是快速排序

o(nlgn)

不穩定是

是氣泡排序

o(n^2)穩定是

是合併排序

o(nlgn)穩定是

是計數排序

o(n)穩定否

否基數排序

o(n)穩定否

否桶排序

o(n)穩定否

排序演算法小結

1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...

排序演算法小結

1 歸併排序 3.區別與聯絡 遞迴是從未知推到已知,相當於把未知的東西壓入棧,等到可以算出結果了,就一步一步出棧。迭代是從已知到未知,從已知的東西一步一步推至目標。遞迴與迭代就好像一對逆元。遞迴的 更加清晰,但開銷更大,也更容易出錯,除錯較困難 而迭代的 編寫更困難,但速度和開銷較小。4.空間占用 ...

排序演算法小結

演算法過程 假設乙個無序的序列,該演算法將其分成兩部分,前一部分已經完成排序 有序,一開始時只有乙個元素 後一部分任然無序,將後面序列選擇第乙個插入到前面的有序序列,如此直到所有完全有序。複雜度 最簡單的即為,整個序列原來即有序,按照一種最 省事 的方式,我們僅需比較n 1次即可。最複雜的情況,應該...