計算機的出現和發展為人類解決了處理複雜資料時間長且精確度不足的問題,而乙個優秀的演算法可以把計算機處理資料的效率大大提高,作為計算機類專業的學生,我們任務就是把客觀世界的問題在頭腦中抽象化,形成合理的演算法,進而更高效的解決問題。
演算法,通俗來講就是解決問題的方法,演算法所要面對的問題是具有一定難度且複雜的問題。並不是程式設計師或者計算機從業人員才運用演算法,事實上演算法出現的時間比計算機要早得多,例如漢代軍事家韓信就運用演算法解決計算士兵人數的問題。
在我看來,求解乙個演算法問題,最重要的將其抽象化,就像在物理學領域,為了更好的進行研究某物體的運動規律,往往會忽略所研究物件的其他屬性,僅僅關注與其研究相關的屬性,將其抽象化為乙個質點。在解決演算法問題時我們也可以採用這種思想,忽略問題的表象,將思考的重點放在問題的本質中,透過表象看本質,這樣才能更好更快的解決問題。
解決某一演算法問題時,我們首先對問題進行抽象化,透過問題去看本質,要將問題去複雜化、結構化,搞清楚內在邏輯,這樣才能找出合適的演算法解決問題。
解決問題的方法有很多,可選的演算法也很多,但有效且便利的方法需要我們根據問題情況去合情挑選和改良,如何設計出最優演算法這取決於99%平日各種演算法的積累(我覺得起碼要能掌握資料結構的所有演算法和一些常用演算法)和1%的靈光乍現。另外不管演算法如何,邏輯是一定要清晰的。
找出合理的演算法後就要進行**實現。這一部分是最能考驗乙個人的功底。演算法設計的再巧妙,如果實現不了也是紙上談兵。**實現不只是要會寫**,還需要有嚴謹的邏輯能力,要考慮到題目要求中的所有情況,以及除錯**修改程式的能力和耐心。
關於專案演算法的思考
開始時間 2011.10 1 目前情況 採用二分插入排序,時間複雜度nlogn,目前採用結構體方式,如 struct roomno r int data int index index是按寫入順序加1,排序時按結構體整體調換,這樣通過index可以再主檔案中找到所有資料,但是排序後,資料移動,需要回...
關於演算法的一點思考。。。
關於演算法的一點思考。在實踐過程中,我發現 有時候要解決乙個問題,可以設計幾個演算法分步完成任務,這樣處理起來比較簡單,但是情況並非總是如此,有時,我們需要將幾個步驟放在同乙個演算法內連帶處理,這樣才比較容易處理問題。我還發現,有時候,解決問題的演算法,是被發現出來的,並加以一步一步的檢驗才得以確定...
演算法複習1 關於遞迴的思考
昨天在牛客上做了幾個遞迴的題目,分別是斐波那契數列,跳台階,跳台階,矩形覆蓋,這幾個題實際上是同乙個題。以下是題目 1.斐波那契數列 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 2.跳台階 乙隻青蛙一次可以跳上1級台階,也可以跳上2級...