UDN-企业互联网技术人气社区

板块导航

浏览  : 1119
回复  : 0

[其它] 学 [数据结构、算法] 的资源推荐

[复制链接]
哥屋恩的头像 楼主
发表于 2016-10-26 19:00:06 | 显示全部楼层 |阅读模式

  0、前言:

  我在初学编程以及学习数据结构的时候,一直有个想问却害怕问出来被嫌弃的问题,那就是“数据结构学了有啥用?算法和数据结构又是啥关系”,那时候懵懵懂懂的,好像明白却又具体回答不上来,说不出所以然。

  现在明白了。

  有这么一句话说“程序=数据结构+算法”,也有人说“如果把编程比作做菜,那么数据结构就好比食材(菜),算法就好比厨艺(做菜的技巧)”。

  当然这是笼统的说法,不过也稍微懂得了数据结构和算法的重要性了。

  其实,数据结构是数据间的有机关系,而算法是对数据的操作步骤;两者不可分开来谈,不能脱离算法来讨论数据结构,也不能脱离数据结构研究算法。

  在网上看到这样一段话:

  数据结构并不是来教你怎样编程的,同样编程语言的精练也不在数据结构的管辖范围之内,那是教你学习一门语言的老师的事情,他肯定不想因为数据结构而失业。数据结构是教你如何在现有程序的基础上把它变得更优(运算更快,占用资源更少),它改变的是程序的存储运算结构而不是程序语言本身。

  如果把程序看成一辆汽车,那么程序语言就构成了这辆车的车身和轮胎。而算法则是这辆车的核心——发动机。这辆车跑得是快是慢,关键就在于发动机的好坏(当然轮胎太烂了也不行),而数据结构就是用来改造发动机的。

  可以这么说,数据结构并不是一门语言,它是一种思想,一种方法,一种思维方式。它并不受语言的限制,你完全可以在gave 中轻而易举地实现一个用C语言给出的算法。

  或许你在初入职场的时候并不会涉及到需要使用到数据结构的地方,也因而觉得数据结构貌似没用,但这和“农民工也能盖大楼,干嘛还学建筑呢?” 是一个道理,应该都懂。

  前面说了超长的废话,其实我是想介绍一些数据结构的学习资源,主要针对编程新手,希望可以解决新手们“如何学习数据结构”的困惑,若对你有所帮助,那真是极好的。

  1、一定要看书籍:

  (ps.我不是推荐书,而是说要看书,要有一个系统的理论基础,至于看什么书可以自己选择~)

  大学的《数据结构》教材,就是一本不错的入门书籍,可以好好看看,毕竟还有老师讲课呢。

  貌似一般的通用教材是 严蔚敏 版的 《数据结构》

4.jpg


  还有一本经典书籍:《数据结构与算法分析》,很多人推荐阅读,如果有基础的话,可以当做工具书使用,哪里不懂看哪里。

3.jpg


  如果你想深入研究算法的话,可以看看《算法导论》,反正据说看完的都很牛。

2.jpg


  其实不一定要是以上书籍啦,只是想说一定要有系统的理论知识,知晓其原理。

  2、善用在线课程:

  除了书籍之外,也可以选择在线学习的方式,比如上慕课、网易云课堂、实验楼等学习网站进行学习,上面一般都会有数据结构这种基础课程,而且质量都还可以。如果你喜欢视频的方式,可以选择慕课或者网易,如果和我一样喜欢动手的方式,可以选择实验楼。

  推荐课程: C/C++ - 数据结构

  介绍的还算详细,关键是可以随时动手跟着做,学习效率很高。

  3、借助可视化工具:

  在学习数据结构之初,往往会觉得知识比较抽象,因此无法对其有个清晰的认知,这个时候就需要 visualgo 这个神器啦!!看着动态视频,一下子就明白原理了。推荐推荐。

1.png


  visualgo 是一款可视化学习算法的工具,从简单的排序算法到复杂的图形数据结构和算法都有。

  visualgo 网址 : https://visualgo.net/

  4、多动手实践:

  在学习算法的时候,一定要花时间来分析其算法原理,基础知识是少不了的,因此前面介绍的书籍也好,在线课程也罢,还有可视化工具,都是为了更好的掌握算法原理。有了基础之后,接下来就要多动手实践了,只有这样才能知道自己哪里学习的不好,需要加强。

  可以上LeetCode(一个美国的在线编程网站,上面主要收集了各大IT公司的笔试面试题)或者 lintcode(编程面试题 在线训练平台,和LeetCode 类似,不过有中文,但是没讨论区) 上刷刷题,或者去类似实验楼一样的拥有在线开发环境的网站学习,真的,只有动手了,你才知道动手的乐趣和收获!

  LeetCode 网址: https://leetcode.com/

  lintcode 网址: http://www.lintcode.com/zh-cn/

  LeetCode上的经典算法解题实战 : LeetCode上 经典算法解题实战

  如果你喜欢这种在线刷题的方式来实践算法,那么知乎上的这个问题绝对可以帮助到你:

  知乎话题:有哪些学习算法的网站推荐?

  以上的内容应该可以帮助你学好数据结构以及实践了,下面整理一些我看到的算法相关文章,可以参考阅读;

  5、分享一些文章材料:

  下面是我平时看到的一些关于算法的文章,还是蛮有用的;

  每个程序员都应该收藏的算法复杂度速查表

  GitHub - 各种算法的C++代码

  15道使用频率极高的基础算法题

  常用的十大编程算法介绍

  八大排序算法的Python实现

  [直观学习排序算法] 视觉直观感受若干常用排序算法

  查找算法之顺序、二分、二叉搜索树、红黑树 详细比较总结

  wikipedia——List of data structures

  wikipedia——List of algorithms

  如果业界中不用高级算法和数据结构,那为什么还要学?

  微博背后的那些算法

  面试中的排序算法总结

  微软面试100题2010年版全部答案集锦(含下载地址)

  国内一线互联网公司内部面试题库

  嗯,觉得能看这个问题的或许会对以下的资源感兴趣,因此也分享出来;

  挑战这十七项编程 锻炼大脑并且提升能力

  谷歌推荐的计算机科学学习路线

  以上就是我对于学习数据结构和算法的一些小建议和资源推荐,希望可以帮助到你~

原文作者:林梓   来源:开发者头条

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部