八大排序演算法詳解

2021-07-22 19:34:38 字數 1139 閱讀 2914

基本概念:

氣泡排序詳解

選擇排序詳解

插入排序詳解

希爾排序詳解

歸併排序詳解

快速排序詳解

堆排序詳解

基數排序詳解

時間複雜度:

電腦科學中,演算法的時間複雜度是乙個函式,它定量描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。

空間複雜度:

空間複雜度(space complexity)是對乙個演算法在執行過程中臨時占用儲存空間大小的量度,記做s(n)=o(f(n))。

排序演算法的穩定性:

假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。

穩定的排序演算法

氣泡排序、插入排序、歸併排序、基數排序

非穩定的排序演算法

選擇排序、希爾排序、快速排序、堆排序

這裡可能有些人對選擇排序不是穩定的有疑問,舉個例子,對陣列進行選擇排序後,就會產生不穩定的新序列。

小結:

如何選擇排序演算法:

1.先分析是否需要穩定性的排序

2.再分析空間複雜度是否滿足需求,然後選擇時間複雜度相對快的

3.快速排序是大多數應用場景的首選

寫在最後的:排序演算法不要死記硬背複雜度如何、穩定性如何,也不需要將**背下來,工業庫已經有各種演算法的實現,死記硬背沒有意義。

只要真正理解了演算法的原理,具體問題具體分析,才能靈活運用,才真正算是學會了演算法。

原文出自:

end;

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...

八大排序演算法

排序的定義 輸入 n個數 a1,a2,a3,an 輸出 n個數的排列 a1 a2 a3 an 使得a1 a2 a3 an in place sort 不占用額外記憶體或占用常數的記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序。out place sort 歸併排序 計數排序 基數排序 桶排序...