常用排序演算法的時間複雜度和空間複雜度

2021-07-12 03:08:02 字數 1270 閱讀 4761

總結:

(1)當排序記錄個數n較大,關鍵碼分布較隨機,且對穩定性不作要求時,採用快速排序為宜。

(2)當待排序記錄個數n較大,記憶體空間允許,且要求穩定排序時,採用歸併排序。

(3)當待排序記錄個數n較大,關鍵碼分布可能出現正序或逆序的情況,且對穩定性不作要求時,採用堆排序或歸併排序。

(4)當待排序記錄個數n較大,而只要找出最小的前幾個記錄,採用堆排序或簡單選擇排序。

(5)當待排序記錄個數n較小(如小於100)時,記錄已基本有序,且要求穩定時,採用直接插入排序。

(6)當待排序記錄個數n較小,記錄所含資料項較多,所佔儲存空間較大時,採用簡單選擇排序。

補充:

時間複雜度和空間複雜度

顧名思義,時間複雜度,就是說演算法在執行過程中所耗用的時間,而空間複雜度,則是演算法執行過程中所占用的空間(記憶體、硬碟等等)。

在演算法中怎麼去衡量【時間複雜度】、【空間複雜度】的複雜級別呢,這裡有乙個專業名詞叫大o階。

推導大o階方法:

1、用常量1取代演算法中的所有加減法操作。

2、在修改後的執行次數函式中,只保留最高端項。

3、如果最高端項存在的不是1,則去除與這個項相乘的引數。

例子

根據推導大o階方法:

1、上面執行的次數3,用常量1表示。

2、沒有最高端

在這段程式中,會執行n/2次。

根據推導大o階方法:

1、上面執行的次數n/2,不是常量。

2、最高端,x=log2n。

再如下面平方階的例子

一共迴圈 n x n 次

根據推導大o階方法:

1、上面執行的次數n x n,不是常量。

2、最高端,x=n2。

再看例子

根據推導大o階方法:

這裡要看我最後乙個紅框內容,他用到了推導方法中的第三點,如果最高端項存在的不是1,則去除與這個項相乘的引數。

所以最終大o階為:o(n2)

常用排序演算法的時間複雜度和空間複雜度

以上快速排序和歸併排序的空間複雜度不正確 圖2沒有的參考圖1,以圖2為準 對,就是懶得重新畫圖了 排序法最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2n 不穩定 o log2n o n 選擇排序 o n2 o n2 ...

常用的排序演算法的時間複雜度和空間複雜度

常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2n 不穩定 o log2n o n 選擇排序 o n2 o n2 穩定 o 1 二叉樹排序 o n2 o n log2n...

常用的排序演算法的時間複雜度和空間複雜度

常用的排序演算法的時間複雜度和空間複雜度 排序法最差時間分析 平均時間複雜度 穩定度空間複雜度 氣泡排序 o n2 o n2 穩定o 1 快速排序 o n2 o n log2n 不穩定o log2n o n 選擇排序 o n2 o n2 穩定o 1 二叉樹排序 o n2 o n log2n 不一頂o...