本人是准备考研的学生,目前在自学数据结构(C++描述)。
感到算法的编写是最吃力的。见到一个新的问题,往往没有思路,抑或是思路很混乱(尤其是涉及循环问题的时候)。
请不必建议我多阅读算法,理解吃透。见过的算法我是的确一句句分析过的,但是感觉还是没有多大长进。
请编程高手指教:我该怎样做才能有一个质的飞跃呢?你们当年初学编写算法的时候又是怎样“涅磐”的呢?请不要从网上大片摘抄,需要的是高手自己的经验和见解。谢谢了!:)
PS: 1.我所指的是,编写小算法的思路,也就是如何构建它的框架。
并非我不知道要先画流程图,也不是做很大的项目。
只要有了一个很清晰的思路,,别的都不是问题。
所以想听听高手对于培养这种思路的经验和建议。
2.对于一道编写算法的题,在读正确答案之前,我都有认真思考的过程,但是思路就是很混乱。并非我只是单一的读别人的算法,而不亲自动手去做。
选一本出色的教材.有条件就看英文的,然后给自己一个环境,例如LINUX+GCC+GDB,用纯粹的语言去在解决问题的过程中学习算法.
没有目的性去学习,往往效率不高,可以找一些ONLINE JUDGE的题目做做.例如Welcome To PKU JudgeOnline,对着里面的问题,先自己思考,尝试编程解决,如果不能解决,就翻翻算法书,想想为什么.
如果还是不行,那就上网看看别人有没有解决掉,怎么做,看看他们用到什么算法,比对着,然后进一步自己去实现.
有时候对于算法的问题的实现,你在实现之前也许会卡住,但是在编程过程中,随着你的锻炼和熟练度的提高.会有那么一天你觉得什么都通了,而且,你是在用的过程中学习.坚持走下去,一定事半功倍.
“cracking the coding interview”,题目是按照array, stack&queue, 链表,树图,递归这种章节安排的,每章节题目7-8个,不多,难度中等,找感觉很有帮助。第一遍自己写不出来的话(我就是,这么弱!),画图分析,抄背默。一遍做完再做一遍,第二遍就快很多,理解也深刻了,所谓读书百遍,其意自现,算法也一样。
不要一开始就看《算法导论》,这本书有太多关于算法的数学证明.
推荐你看看这本:算法(第4版) (豆瓣),作者是高德纳的学生:塞奇威克 (Robert Sedgewick)
书中算法代码主要是用Java编写,里面有大量的图来让你明白例如:排序,查找,树和图的算法运行过程。
这本书的目录编排也很清晰,他就告诉你算法主要就可以分为:排序,查找,图和字符串。从这4个方面可以演化出很多算法,最关键是:这本书的作者不但是在告诉你what,而且告诉你why(分析各种算法的优缺点)
这本书其他好的地方
比如讲到快速排序,很多书可能讲了快速排序的原理就完了。但这本书就直接讲了原始的快速排序可以改进的地方:1. 在小数组上,切换到插入排序;2. 三取样切分;3. 三向切分的快速排序。
优先队列怎么和排序算法扯上关系呢?其实优先队列就是可以用堆排序来实现,堆排序的时间复杂度和快速排序是一样的,但是实际中为什么堆排序的运行时间要比快速排序多呢?因为这和CPU的Cache命中率有关系,堆排序不符合算法运行的局部性原则
比如书中2.5节,讲了排序算法的实际用途,这本书不光告诉你算法的原理,还告诉你算法的用途。
怎样培养自己的编程思维??
(2)逻辑思维能力的培养 学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了...
程序员如何提高自己的编程技巧
多看高手代码,读一些优秀的开源代码,看一些经典的书籍。比如说《Effective C++》、《Effective Java》、lucene的源码。这些会让你提升巨大,只有了解到高手眼中的世界,才能有成为高手的可能!代码重构。多回顾之前写的代码,进行一个系统性的整理。因为我们起初开发,不是面面都能想到,许多新东西是不可避...
要成为一个编程高手需要读什么书呀 需要掌握什么样的知识和技能呀
要成为编程高手,首先要选择你感兴趣的编程领域,比如现今流行的VB或VC。每个领域都有其独特之处,你需要深入学习并掌握。编程学习的核心是数据结构。数据结构是计算机科学的重要基础,学习它能帮助你更好地理解和解决问题。数据结构的书籍是必读之选,例如《算法导论》、《数据结构与算法》等,它们能为你...
如何成为一个计算机编程高手
1 喜欢计算机编程,把编程当成是快乐的事情(*)2 毅力:无论你学任何程序都要有毅力,没有毅力干个1、2年就转行 那做什么 也做不好 3 计算机编程高手:经验+努力。 如果你再有天赋,没有经验也是初学者。经验是任何东西都换不来的。4 如果不具备 努力 呵呵 那去一个小公司,前提 这个小公司 ...
怎样学编程?
学编程入门建议:1.学编程要从根本出发,从理论上来说,需要广泛的阅读。了解算法的博大精深和计算机的基本理论。2.从实践上来说,需要有广泛的练习,练习的广泛在于练习不同的内容。然后就是创新精神和数学思维能力,这些都是需要培养的。基础要打好学编程要具备一定的基础。3.逻辑思维能力的培养、学...
如何靠自学提升自己的编程能力?
3、多阅读源码阅读源代码是学习编程的重要方式之一。通过阅读其他人编写的代码,你可以学习到其他人的编程思路和技巧。同时,阅读源代码还可以帮助你更好地理解编程语言和框架的工作原理。如果你想要学习一个新的编程语言或框架,阅读其源代码是非常有帮助的。关于源码阅读的三层境界:初级:记流水账——...
为什么我编程的时候感受不到那种乐趣,也不是程序难?要怎么培养啊
6.3.5养成良好习惯细节很重要要细心,沉下心来编程,戒骄戒躁养成良好习惯,注重编程风格,尽量写代码注释,把写过的代码保留下来,以后会有用6.3.6善于思考遇到问题动脑筋解决6.3.7注重基础打好编程基础,除了熟悉基本的语法之外,要深刻理解指针,引用,面向过程思想,类,模板,标准库,接口,继承机制,面向对象思想等等,课后...
怎样提高编程能力
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加...
如何学习算法
学习算法时,首先需要掌握编程语言,比如Java。通过实际编写小程序,如排序算法和汉诺塔问题,可以加深理解。接着,学好数据结构至关重要,尤其是队列、栈、树等。如果想深入理解图算法,这些基础知识必须熟练掌握。数据结构的书籍众多,选择一本适合自己的即可,CSDN上有许多高手分享相关知识。《算法导论》是...
如何学编程入门
其实,编程就像是我们在学一门新的"外语",需要我们掌握基本的语法。先了解基本的概念,比如,变量,函数,数组,类,面向对象等等。还需要掌握一些最基本的算法和计算机英语。学习的时候,要定期检验你的学习成果,发现自己的问题,然后再做针对性的学习。4、边学边实践,通过项目引导学习 刚开始,建议先...