數據結構筆記淺記(二)時間複雜度

時間複雜度由 𝑇(𝑛) 中最高階的項來決定。這是因爲在 𝑛 趨於無窮大時,最高階的項將發揮主導作用,其他 項的影響都可以忽略。

 

不同操作數量對應的時間複雜度

 

設輸入數據大小爲 𝑛 ,常見的時間複雜度類型(按照從低到高的順序排列)。

𝑂(1) < 𝑂(log 𝑛) < 𝑂(𝑛) < 𝑂(𝑛 log 𝑛) < 𝑂(𝑛2 ) < 𝑂(2𝑛) < 𝑂(𝑛!)    【數學表示】

常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 【文字表述】

 

***遍歷數組和遍歷鏈表等操作的時間複雜度均爲 𝑂(𝑛) ,其中 𝑛 爲數組或鏈表的長度。***

***平方階通常出現在嵌套循環中,外層循環和內層 循環的時間複雜度都爲 𝑂(𝑛) ,因此總體的時間複雜度爲 𝑂(𝑛2 )。***

***在實際算法中,指數階常出現於遞歸函數中。指數階增長非常迅速,在窮舉法(暴力搜索、回溯等)中比較常見。對於數據規模較大的問題,指數階是不 可接受的,通常需要使用動態規劃或貪心算法等來解決。***

***對數階反映了“每輪縮減到一半”的情況。設輸入數據大小爲 𝑛 ,由於每輪縮減到一半,因 此循環次數是 log2 𝑛 ,即 2 𝑛 的反函數。對數階也常出現於遞歸函數中,對數階常出現於基於分治策略的算法中,體現了“一分爲多”和“化繁爲簡”的算法思想。它增長緩慢,是 僅次於常數階的理想的時間複雜度。 ***

***主流排序算法的時間複雜度通常爲 𝑂(𝑛 log 𝑛) ,例如快速排序、歸併排序、堆排序等。***

***階乘階對應數學上的“全排列”問題。給定 𝑛 個互不重複的元素,求其所有可能的排列方案。階乘通常使用遞歸實現。***

 

算法的時間效率往往不是固定的,而是與輸入數據的分佈有關。

 

“最差時間複雜度”對應函數漸近上界,使用大 𝑂 記號表示。相應地,“最佳時間複雜度”對應函數漸近下界, 用 Ω 記號表示。平均時間複雜度可以體現算法在隨機輸入數據下的 運行效率,用 Θ 記號來表示。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章