常見演算法的時間複雜度

2021-08-25 08:04:23 字數 1179 閱讀 1780

排序方法        平均情況        最好情況        最壞情況        輔助空間        穩定性

氣泡排序         o(n^2)           o(n)              o(n^2)            o(1)                穩定

選擇排序         o(n^2)          o(n^2)            o(n^2)            o(1)              不穩定

插入排序         o(n^2)           o(n)              o(n^2)            o(1)                穩定

希爾排序o(n*log(n))~o(n^2) o(n^1.3)       o(n^2)            o(1)              不穩定

堆排序          o(n*log(n))     o(n*log(n))    o(n*log(n))       o(1)              不穩定

歸併排序       o(n*log(n))     o(n*log(n))    o(n*log(n))       o(n)                穩定

快速排序       o(n*log(n))     o(n*log(n))      o(n^2)            o(1)              不穩定

氣泡排序經過優化以後,最好時間複雜度可以達到o(n)。設定乙個標誌位,如果有一趟比較中沒有發生任何交換,可提前結束,因此在正序情況下,時間複雜度為o(n)。選擇排序在最壞和最好情況下,都必須在剩餘的序列中選擇最小(大)的數,與已排好序的序列後乙個位置元素做交換,依次最好和最壞時間複雜度均為o(n^2)。插入排序是在把已排好序的序列的後乙個元素插入到前面已排好序(需要選擇合適的位置)的序列中,在正序情況下時間複雜度為o(n)。堆是完全二叉樹,因此樹的深度一定是log(n)+1,最好和最壞時間複雜度均為o(n*log(n))。歸併排序是將大陣列分為兩個小陣列,依次遞迴,相當於二叉樹,深度為log(n)+1,因此最好和最壞時間複雜度都是o(n*log(n))。快速排序在正序或逆序情況下,每次劃分只得到比上一次劃分少乙個記錄的子串行,用遞迴樹畫出來,是一棵斜樹,此時需要n-1次遞迴,且第i次劃分要經過n-i次關鍵字比較才能找到第i個記錄,因此時間複雜度是\sum_^(n-i)=n(n-1)/2,即o(n^2)。

常見排序演算法的時間複雜度

最好最壞 平均陣列中插入元素 o 1 每次都在陣列的末尾插入 o n 每次都在陣列的頭部插入 假設資料量為n。最好 最壞平均 基本排序 冒泡 無標誌位 o n 2 o n 2 o n 2 冒泡 有標誌位 o 1 說明 已有序,只需1次 o n 2 說明 逆序,標誌位無效。同上 o n 2 說明 以有...

常見的時間複雜度

常見演算法時間複雜度 o 1 優 劣 o 1 2n o n o n2 o 2n 時間複雜度按數量級遞增排列依次為 常數階o 1 對數階o log2n 線性階o n 線性對數階o nlog2n 平方階o n2 立方階o n3 k次方階o nk 指數階o 2n 常用的排序演算法的時間複雜度和空間複雜度 ...

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...