如何学好数据结构和算法

转载 2015年09月09日 10:22:05

        数据结构和算法是计算机科学中最重要的课程,作为一名Google的软件工程师,我经常看到一些求职者或刚毕业的学生,他们对于数据结构和算法的学习是远远不够的。这不是说他们看的书是有问题的,或教授们教错了内容,而是学生对这个课程的理解是不到位的。

       扎实掌握数据结构和算法的关键并不是要对每一种数据结构和它的子形式都做详尽的调查,然后记住它们的时间复杂度和空间复杂度。记住这些看起来很棒,也很吸引人,但说实话,你在实际中很少会用到它们。不管怎样,在你的职业生涯中都不会让你实现一个红黑树结点删除的算法,但是,你必须要做到而且轻松的发现在什么时候你需要用二叉搜索树来解决问题,这个是你经常要用到的技能。

      所以,停止背诵那些没用的东西吧,从现在开始学好下面这两件基本并且重要的事情:

       1.形象化数据结构。直观的理解某种数据结构是什么样的,使用起来是什么样的,在抽象和实际的内存中是如何存储的。这是一件单独的并且很重要的事情,从最简单的栈和队列到很复杂的平衡树。你可以把它们画出来,直观地展现在你脑海里,无论你用什么方式,最重要的就是你要直观地去理解。

       2.知道在自己的代码中何时,并如何去使用这些不同的数据结构和算法。这一点对于学生来说可能有点难,因为在他们的作业中不需要思考这些。没有关系,你以后会意识到如果你不参加一个实际的项目,你就永远不会理解数据结构,你也不会发现哈希算法是你解决性能问题的方法。但是,即使是学生,你也应该学习一些实用性强的内容,比如什么时候用哈希表?什么时候用树结构?什么时候最小堆是最好的解决方案?

       在Google面试时,我会问一个可以把二叉搜索树作为潜在答案的问题,一个较好的回答可以在几分钟后就可以想到二叉搜索树,并顺着它用10-15分钟去解决那些我设置的问题,最终得出答案。但是有一次,我遇到了一个更优秀的面试者,他很形象地理解了树的概念,可以直观地把我的问题展现出来,他可能会被算法精确的复杂度卡住,但是他可以一直在解决问题,因为他做到了把“树结构”直观的展现出来。他最终也得到了这个职位。


学好数据结构的重要性

个人认为数据结构是编程最重要的基本功没有之一!         学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用链表;而单向链表不方便怎么办,...
  • cafucwxy
  • cafucwxy
  • 2017-01-03 16:40:10
  • 966

数据结构全攻略--学好数据结构的必经之路

很多人在学习时一猛子扎进细节里无法自拔,以至于顾此失彼,丢了西瓜捡了芝麻。这种学习方法特别浪费时间,效率也非常低下,以至于在学习的长河中惨遭淘汰。如果这种人继续不思进取,那么在激烈的社会竞争环境中也会...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2013-09-16 09:23:12
  • 22440

到底该如何学习数据结构?

昨天买了本《大话数据结构》,之后就开始看。数据结构给我的印象就是一大堆code,自己实现很麻烦,而且很容易出detail errors,望着书上的代码,我在想,难道我真要把他们都能独自写下来?其实想想...
  • laciqs
  • laciqs
  • 2011-08-19 17:53:41
  • 8469

关于数据结构学习方法

在网上搜集到的数据结构学习方法,请同学们参考。   谈数据结构学习方法(转帖) 我在这里只是谈谈自己的学习体会现在咱们学的的数据结构是C++版本的 所以C++的一些基础知识应该先看会 尤其是指针...
  • liupeng900605
  • liupeng900605
  • 2011-12-13 16:14:55
  • 7991

算法为什么那么难?——算法学习秘籍

算法为什么那么难?——算法学习秘籍 遇到一个问题,如何分析,使用什么算法策略,采用什么数据结构,算法的复杂性如何?是否有优化的可能?...
  • rainchxy
  • rainchxy
  • 2017-07-27 10:27:17
  • 2467

到底该如何学习算法?

俗话说“磨刀不误砍柴工”,虽然我已经开始砍柴,但磨刀还是在继续。除了四处搜罗算法书外,我也看了N多前辈的经验之谈,大到刘未鹏的文章,小到网友们对多本算法书的评论,我都有所吸收,也愈加感到知其所以然的必...
  • laciqs
  • laciqs
  • 2011-10-16 15:30:18
  • 12444

到底该如何学习算法?

俗话说“磨刀不误砍柴工”,虽然我已经开始砍柴,但磨刀还是在继续。除了四处搜罗算法书外,我也看了N多前辈的经验之谈,大到刘未鹏的文章,小到网友们对多本算法书的评论,我都有所吸收,也愈加感到知其所以然的必...
  • kingmax54212008
  • kingmax54212008
  • 2015-10-16 10:54:27
  • 2135

数据结构和算法学习之路

这篇文章讲了什么? 我这些年学习数据结构和算法的总结。 一些不错的算法书籍和教程。 算法的重要性。 初学 第一次接触数据结构是在大二下学期的数据结构课程。然而这门课程并没有让...
  • a_long_
  • a_long_
  • 2016-03-18 14:29:06
  • 5734

浅谈数据结构与算法分析学习及如何进行算法分析

前言都说数据结构与算法分析是程序员的内功,想要理解计算机世界就不能不懂点数据结构与算法,然而这也备受争议,因为大多数的业务需求都用不上数据结构与算法,又或者说已经有封装好的库可以直接调用,例如Java...
  • github_37022917
  • github_37022917
  • 2017-01-26 21:54:46
  • 3100

程序员的内功——算法

程序员的内功——算法 http://www.cnblogs.com/jingmoxukong/p/4329079.html 行走江湖,要想成为一代大侠,高手中的高手,深厚的...
  • zdy0_2004
  • zdy0_2004
  • 2015-03-23 00:11:40
  • 759
收藏助手
不良信息举报
您举报文章:如何学好数据结构和算法
举报原因:
原因补充:

(最多只允许输入30个字)