資料結構和演算法大大的提高的**的效率,使得**更加規範。
輸入: 演算法具有0個或多個輸入
輸出: 演算法至少有1個或多個輸出
有窮性: 演算法在有限的步驟之後會自動結束而不會無限迴圈,並且每乙個步驟可以在可接受的時間內完成
確定性:演算法中的每一步都有確定的含義,不會出現二義性
可行性:演算法的每一步都是可行的,也就是說每一步都能夠執行有限的次數完成
實現演算法程式的執行時間可以反應出演算法的效率,但是單靠時間並不能客觀準確判斷,為了創立乙個標準,定義了「時間複雜度」
時間複雜度:每天機器執行時間不同,但是基本運算數量基本相同,用運算數量來判斷時間複雜度
在效率判斷時,我們需要關注最壞時間複雜度。提供了乙個保證
基本操作,即只有常數項,認為其時間複雜度為o(1)
順序結構,時間複雜度按加法進行計算
迴圈結構,時間複雜度按乘法進行計算
分支結構,時間複雜度取最大值判斷乙個演算法的效率時,往往只需要關注運算元量的最高次項,其它次要項和常數項可以忽略
在沒有特殊說明時,我們所分析的演算法的時間複雜度都是指最壞時間複雜度用0(n²)來表示n²所帶的係數和常數
o(1) < o(logn) < o(n) < o(nlogn) < o(n2)list和字典內建操作時間複雜度
不同資料結構引用的辦法不同,列表字典元組等都已經是資料結構而不是簡單的基本型別
把資料型別和資料型別上的運算捆在一起,進行封裝,例如:插入,刪除等
資料結構和演算法之時間複雜度
2.空間複雜度 學習資料結構和演算法,並不是為了死記硬背幾個知識點。我們的目的是建立時間複雜度 空間複雜度意識,寫出高質量的 能夠設計基礎架構,提公升程式設計技能,訓練邏輯思維,積攢人生經驗,以此獲得工作回報,實現你的價值,完善你的人生。掌握了資料結構與演算法,你看待問題的深度,解決問題的角度就會完...
資料結構與演算法之時間複雜度
一般情況下,演算法中的基本操作語句的重複執行次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 使得當n趨近於無窮大時,t n f n 的極限值為不等於零的常數,則稱f n 是t n 的同數量級函式。記作 t n f n 稱 f n 為演算法的漸進時間複雜度,簡稱時間複雜度。t n ...
資料結構與演算法之時間複雜度
度量乙個程式 演算法 執行時間的兩種方法 1 事後統計的方法 這種方法可行,但是有兩個問題 一是要想對設計的演算法的執行效能進行評測,需要實際執行該程式 二是所得時間的統計量依賴於計算機的硬體 軟體等環境因素,這種方式,要在同一臺計算機的相同狀態下執行,才能比較那個演算法速度更快。2 事前估算的方法...