回覆列表
-
1 # 學學IT
-
2 # xy137007101
我看下面有人根據資料結構中的內容回答了演算法和程式的關係,這裡就沒有必要再重複了,談談個人理解。 其實我們完全沒必要把問題搞複雜化,可以很簡單理解,演算法就是解決問題的方法,可以用我們的自然語言說出來也可以用計算機能理解的語言寫出來,如c,java等等,用計算機語言寫出來的就是程式了。這是最簡單的理解。
我看下面有人根據資料結構中的內容回答了演算法和程式的關係,這裡就沒有必要再重複了,談談個人理解。 其實我們完全沒必要把問題搞複雜化,可以很簡單理解,演算法就是解決問題的方法,可以用我們的自然語言說出來也可以用計算機能理解的語言寫出來,如c,java等等,用計算機語言寫出來的就是程式了。這是最簡單的理解。
程式 = 演算法 + 資料結構
可能有很多會程式設計的人,不贊成這個觀點,說自己不會演算法也可以程式設計啊。但是我認為一個好的程式一定包含了好的演算法,好的演算法可以提高程式的執行速度。
舉一個簡單的例子:
有一個年級的成績已經從高到低排好序了,我想估計一下,75分能排第幾名?可能大家會說有什麼難的,一直從高到低往下找啊,找到75分就知道,75分能排第幾名了。但是你有沒有想過,既然成績到已經排序了,我直接從中間開始查詢,例如中間的分數為80分,那麼75分就應該包含在(75,到最低分這個區間上],又把這個區間對比查詢,這樣一直縮小區間,最終就能找到了。這就是一個二分查詢或者說是折半查詢的演算法。
上面例子,就是查詢比一直這就是懂演算法人和不懂演算法人的差別,折半查詢的用時就會比順序查詢的少:
順序查詢:最壞時間複雜度是O(n);最優時間複雜度O(1);平均時間複雜度O(n)折半查詢:最壞時間複雜度O(log n);最優時間複雜度O(1);平均時間複雜度O(log n)資料結構也是程式編寫中的重要一環,資料的結構設計得好,也可以提高程式執行效率,並且還可以減少空間的佔用。
所以我覺得學好演算法對程式設計有很大的好處。