有些算法書上在學習語言部分會有壹點算法包含在內,比如遞歸。
要學算法,先練好遞歸,這會對妳深入學習其他算法有很大的幫助。
樹形結構是數據結構中較難的部分,也是數據結構的基礎,主要靠練。
還有就是,不要總是學習理論,合上書本認真地把算法用代碼和實現是最重要的。
不要背代碼,沒用的,註重理解。
剛開始會有些不習慣,學得多了就好了。
-------------------------------------------------------------------------------------------
內容出自/question/19830721
希望對妳有幫助
1. 程序 = 數據結構 + 算法
2. 學習:剛開始看時肯定會有些不清楚,因為妳是剛學完 語言,對語言還不太熟練。妳學習數據結構時找壹本經典的數據結構書,看完壹個數據結構後用語言將其實現。開始時的實現肯定會有困難,那麽請百度下會有很多優秀的數據結構源碼的。妳可以模仿這些優秀的源碼寫。請記住壹定要開始時自己實現,當被卡住了就看壹下源碼,看看自己被卡在了什麽地方,引起註意以便下次自己會寫。當妳把書上的數據結構源碼寫了壹遍之後,妳已經超過了妳絕大部分的同學。
3. 運用: 這時妳就需要對這些數據結構加以運用,妳可以在百度上搜索“某個數據結構 + ACM”,妳就會看到壹些題目,這些題目都是數據結構的運用,甚至有這些數據結構的變形。每種數據結構做5題左右。期間妳還會遇到程序另壹重要的方面算法,有不會的就 百度。 期間可以學到的數據結構和算法做小軟件玩兒,例如壓縮軟件,五子棋之類的。
4. 深入: 當妳完成了第三步妳已經是妳們學校的小高手了。這時看妳的方向如果這時發現自己喜歡 ACM 的話就去搞 ACM,如果不感興趣,就找自己感興趣的技術學習壹下,做幾個完整的項目,例如寫個編譯器,或者實現壹個簡單的編程語言。
總結:無論選擇哪條道路只要按照這些做了,妳畢業後肯定會成為搶手貨。
-------------------------------------------------------------------------------------------
也就這樣了:
時間並不會因為妳的迷茫和遲疑而停留,
就在妳看這篇文章的同時,
不知道有多少人在冥思苦想,
在為算法廢寢忘食,
不知道有多少人在狂熱地拍著代碼,
不知道又有多少提交壹遍又壹遍地刷新著OJ的status頁面……
沒有誰生來就是神牛,
而千裏之行,
始於足下!
我期盼NOIP壹等榜上有妳(雖然我不知道妳叫什麽)。