排序演算法小結

2022-08-03 22:45:29 字數 647 閱讀 8794

對於小規模的資料,o(n**2)的排序演算法效能可能比o(nlogn)的排序演算法更好

歸併排序適合與占用空間比較小的資料集

在其他語言中,插入排序比氣泡排序更好是因為氣泡排序交換需要3個賦值語句,而插入排序只需要乙個

氣泡排序和插入排序的交換次數都等於逆序度,無論怎麼優化,但最好情況的時間複雜度都是o(n)

歸併排序和選擇排序的時間複雜度在不同情況下是不會改變的

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

桶排序和計數排序比較類似,桶排序適合用於外部排序,即資料量比較大無法一次性載入到記憶體中時,計數排序適合於資料範圍比較小的場景,計數排序可以是穩定排序,通過將計數陣列逐位相加,然後從後往前遍歷原陣列,取出計數陣列的值減1作為結果陣列中的下標。再將計數陣列相應位置值減1,迴圈以上操作即可保持穩定。

堆排序沒有快速排序好是因為:堆排序的資料訪問不友好,不是按序訪問的;對於同樣的資料,堆排序的交換次數更多,快速排序資料交換次數不會高於逆序度,而堆排序在建堆過程中會打亂資料,使得有序度降低。

乙個通用、高效能的排序函式:

c中的排序函式是這樣實現的:優先使用歸併排序,當要排序的資料量比較大的時候,切換為快速排序,分割槽點的選擇使用三數取中法,堆疊溢位問題可通過實現乙個堆上的棧,手動模擬遞迴來解決。當要排序的區間中,元素的個數小於等於4時,會使用插入排序。

排序演算法小結

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

排序演算法小結

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

排序演算法小結

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