搞编程的我是个算法渣,怎么样能很快的提升算法水平?有什么必要的或者非常基础的算法需要掌握?

急。求职之前大概还有3个月左右的时间,期间还要学习其他知识,时间不是很充分,求一些非常有效的学习方法。

算法的实现需要你对数据结构有充分的理解,我个人觉得数据结构是算法的基础,至少我是先熟悉数据结构再弄算法的,这样接受起来比较快。所以建议你
1:先花些时间掌握数据结构知识,比如数据结构基本类型;线性表、树、图、集合的存储表示以及他们的应用,而要想熟练运用这些线性表、树、图、集合,那么又必须要非常熟练栈和队列,因为栈和队列是必不可少的,如果你非常熟练运用栈和队列,那么你肯定能轻松搞定牵涉到线性表、树等这些应用的。
2:掌握基本的查找算法和排序算法;因为有了上述数据结构的铺垫,也较容易接受查找和排序算法在计算机内部的组织形式,对于运用计算机思想思考问题有很大的帮助。
3:学习常用的算法思想,如分治、贪心、动态规划、回溯等等。学习之后自己动手找一些题目敲敲代码,刚开始可以按照答案敲,慢慢要丢开答案自己来组织思路了。
4:要熟悉分析算法的复杂度,因为接着要开始思考代价问题了,包括时间和空间的开销。
其实用谁的书都无所谓,只要内容齐全了,而你自己阅读起来接受得更好就用谁的。如果还有时间,推荐你看看朱东生赵建利等的《新编数据结构算法 考研指导》(当时我考研用来辅助看的,里面讲解的递归与非递归之间的转换非常好)。
5:如果有兴趣可以看看《编程珠玑》和《编程之美》,有些企业招聘时会从中挑个别题目出题。
总之,我觉得数据结构是基础,算法是灵魂。多思考,多运用就能熟能生巧了。工科类的不多动动手那些知识是很容易生疏的。
以上观点仅供参考,纯属个人观点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-14

找任何语言的网友  总结的  基础算法教程,网上有大量,参照代码从程序的角度去理解(语言是工具,思想是核心,不要告诉我你换了种语言就不懂算法) 


往后有时间再慢慢补一下数学,毕竟算法基础还是数理,再慢慢提升算法思想吧。


我这里说的是  逻辑算法很容易理解,但如果数据结构之类的算法,就需要一定的数学知识了


其实一般程序员刚工作时都不会涉及非常复杂的算法的,除非你后期做到主程或核心功能开发吧,否则不同的语言别人写好的第三方类库其实也提供了很多算法的现成方案,懂套用就可以了。







相似回答