學習編程開發之數據結構與算法
掌握數據結構和算法知識是成為一名合格開發人員的必須,無論你是使用任何一種編程語言。
舉例:
如果a+b+c=1000,且a^2+b^2=c^2(a,b,c為自然數),如何求出所有a,b,c可能的組合?
思路(枚舉法):
>算法的概念
算法是計算機處理信息的本質,因為計算機程序本質上是一個算法來告訴計算機確切的步驟來執行一個指定的任務。一般地,當算法在處理信息時,會從輸入設備或數據的存儲地址讀取數據,把結果寫入輸出設備或某個存儲地址供以后再調用。
算法是獨立存在的一種解決問題的方法和思想。
對于算法而言,實現的語言并不重要,重要的是思想。
算法可以有不同的語言描述實現版本(如C描述、C++描述、Python描述等),我們現在是在用Python語言進行描述實現。
>算法的五大特性
1.輸入: 算法具有0個或多個輸入
2.輸出: 算法至少有1個或多個輸出
3.有窮性: 算法在有限的步驟之后會自動結束而不會無限循環,并且每一個步驟可以在可接受的時間內完成
4.確定性:算法中的每一步都有確定的含義,不會出現二義性
5.可行性:算法的每一步都是可行的,也就是說每一步都能夠執行有限的次數完成
>算法效率衡量
時間復雜度與大O記法
每臺機器執行的總時間不同
但是執行基本運算數量大體相同
>時間復雜度的幾條基本計算規則
1.基本操作,即只有常數項,認為其時間復雜度為O(1)
2.順序結構,時間復雜度按加法進行計算
3.循環結構,時間復雜度按乘法進行計算
4.分支結構,時間復雜度取最大值
5.判斷一個算法的效率時,往往只需要關注操作數量的最高次項,其它次要項和常數項可以忽略
6.在沒有特殊說明時,我們所分析的算法的時間復雜度都是指最壞時間復雜度
>常見時間復雜度
>常見時間復雜度之間的關系
浙公網安備 33010602011771號