先学好语言,这是学习的基础。
有些算法书上在学习语言部分会有一点算法包含在内,比如递归。
要学算法,先练好递归,这会对你深入学习其他算法有很大的帮助。
树形结构是数据结构中较难的部分,也是数据结构的基础,主要靠练。
还有就是,不要总是学习理论,合上书本认真地把算法用代码和实现是最重要的。
不要背代码,没用的,注重理解。
刚开始会有些不习惯,学得多了就好了。
-------------------------------------------------------------------------------------------
内容出自http://www.zhihu.com/question/19830721
希望对你有帮助
1. 程序 = 数据结构 + 算法
2. 学习:刚开始看时肯定会有些不清楚,因为你是刚学完 语言,对语言还不太熟练。你学习数据结构时找一本经典的数据结构书,看完一个数据结构后用语言将其实现。开始时的实现肯定会有困难,那么请百度下会有很多优秀的数据结构源码的。你可以模仿这些优秀的源码写。请记住一定要开始时自己实现,当被卡住了就看一下源码,看看自己被卡在了什么地方,引起注意以便下次自己会写。当你把书上的数据结构源码写了一遍之后,你已经超过了你绝大部分的同学。
3. 运用: 这时你就需要对这些数据结构加以运用,你可以在百度上搜索“某个数据结构 + ACM”,你就会看到一些题目,这些题目都是数据结构的运用,甚至有这些数据结构的变形。每种数据结构做5题左右。期间你还会遇到程序另一重要的方面算法,有不会的就 百度。 期间可以学到的数据结构和算法做小软件玩儿,例如压缩软件,五子棋之类的。
4. 深入: 当你完成了第三步你已经是你们学校的小高手了。这时看你的方向如果这时发现自己喜欢 ACM 的话就去搞 ACM,如果不感兴趣,就找自己感兴趣的技术学习一下,做几个完整的项目,例如写个编译器,或者实现一个简单的编程语言。
总结:无论选择哪条道路只要按照这些做了,你毕业后肯定会成为抢手货。
-------------------------------------------------------------------------------------------
也就这样了:
时间并不会因为你的迷茫和迟疑而停留,
就在你看这篇文章的同时,
不知道有多少人在冥思苦想,
在为算法废寝忘食,
不知道有多少人在狂热地拍着代码,
不知道又有多少提交一遍又一遍地刷新着OJ的status页面……
没有谁生来就是神牛,
而千里之行,
始于足下!
我期盼NOIP一等榜上有你(虽然我不知道你叫什么)。