簡單的演算法複雜度

2021-08-17 06:09:31 字數 1055 閱讀 6856

常見的演算法複雜度:

堆排序演算法

構建堆:有比較 交換過程,構建堆 時間複雜度 o(n);

完全二叉樹某個節點 i 到根節點 距離,

⌊logi⌋+1 

需要取 n-1 次堆頂記錄,重建堆的時間複雜度為 o(nlogn);

總的,堆排序的時間複雜度是 o(nlogn).效能上遠遠好過 冒泡,簡單選擇,直接插入的o(n^2).

空間上,只有乙個 暫存交換單元,也不錯。就是跳躍性,所以不穩定。初始建堆需要多次比較,不適合排序個數少的情況。

歸併排序:

【遞迴】掃瞄待排序序列,耗費o(n),完全二叉樹深度知,歸併要進行

⌈logn⌉次,總的時間複雜度是o(nlogn)。

【非遞迴,迭代】避免深度 logn 的棧空間,空間只用臨時申請的陣列,空間複雜度o(n),時間複雜度也有優勢,推薦用非遞迴。

快速排序:

數學歸納法知 時間複雜度為 o(nlogn) ,空間複雜度 o(nlogn) ,不穩定。

希爾排序:

時間複雜度 o(n^3/2)

二叉查詢樹的時間複雜度:

類似於者半查詢,如果是平衡的話,與完全二叉樹深度相同,那麼是 ⌊logi⌋+1

如果是一字蛇形,那麼就是o(n);不平衡的最壞的情況, 所以最好把二叉查詢樹 構建為 平衡二叉樹。

簡單演算法複雜度

這是任何ai工程師必須深入理解的概念,對於每乙個設計出來的演算法都需要從兩個方面來分析演算法複雜度 時間複雜度和空間複雜度。時間複雜度是說演算法執行時間,空間複雜度是佔據的儲存空間。一般我們使用o notation來表示,比如o n o n 2 我們看上面 它的時間複雜度是有乙個0到n的迴圈,有n ...

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

在一次筆試題目中,發現了自己對於演算法的時間複雜度問題上並沒有完全清晰這個概念和計算方法,故上網尋找到比較好的詳細介紹來學習。演算法的時間複雜度和空間複雜度合稱為演算法的複雜度。1.時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也...

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

通常,對於乙個給定的演算法,我們要做 兩項分析。第一是從數學上證明演算法的正確性,這一步主要用到形式化證明的方法及相關推理模式,如迴圈不變式 數學歸納法等。而在證明演算法是正確的基礎上,第二步就是分析演算法的時間複雜度。演算法的時間複雜度反映了程式執行時間隨輸入規模增長而增長的量級,在很大程度上能很...