首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《数据结构与算法》学习资源分享

学习了C语言,那么我们就得接着学习《数据结构》这门课程。

内容包括:数据结构概论、线性表、栈与队列、串、数组、树、图、查找、排序、递归、文件等;为了加强对算法的理解,还介绍了算法分析方面的内容。

数据结构和算法是一部发展史,发明他们就是为了“做出东西”,学习他们是为了不重复发明轮子,当你在“做东西”时遇到运行效率上的瓶颈,就可以参考这些前人的方案,当学完后,就能评估出一个“东西”以现在的技术是否可能做出来。有人罗列xx结构、xx算法能干嘛干嘛全是屁话,书上都有。说白了这东西就是前人的公式,学习就是为了套公式解决问题的,解决世界难题就要发明新公式(算法/结构),能否做出来包括两点:第一,效率是否能承受;第二,功能是否能实现。一些语言包装了大量基础算法,用于快速实现功能,一般效率也是可以接受的。当效率不能接受,就需要调整算法和结构,c语言甚至汇编语言。

个人认为数据结构是编程最重要的基本功没有之一!

学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会想到双向链表or循环链表。

学了栈之后,你就知道,很多涉及后入先出的问题,例如函数递归就是个栈模型、Android的屏幕跳转就用到栈,很多类似的东西,你就会第一时间想到:我会用这东西来去写算法实现这个功能。

学了队列之后,你就知道,对于先入先出要排队的问题,你就要用到队列,例如多个网络下载任务,我该怎么去调度它们去获得网络资源呢?再例如操作系统的进程(or线程)调度,我该怎么去分配资源(像CPU)给多个任务呢?肯定不能全部一起拥有的,资源只有一个,那就要排队!那么怎么排队呢?用普通的队列?但是对于那些优先级高的线程怎么办?这时,你就会想到了优先队列,优先队列怎么实现?用堆,然后你就有疑问了,堆是啥玩意?接二连三的疑惑会让你一步一步的懂得更多的知识,提高编程效率!

总之好好学数据结构就对了。我觉得数据结构就相当于:我塞牙了,那么就要用到牙签这“数据结构”,当然你用指甲也行,只不过“性能”没那么好;我要拧螺母,肯定用扳手这个“数据结构”,当然你用钳子也行,只不过也没那么好用。学习数据结构,就是为了了解以后在IT行业里搬砖需要用到什么工具,这些工具有什么利弊,应用于什么场景。以后用的过程中,你会发现这些基础的“工具”也存在着一些缺陷,你不满足于此工具,此时,你就开始自己在这些数据结构的基础上加以改造,这就叫做自定义数据结构。而且,你以后还会造出很多其他应用于实际场景的数据结构。你用这些数据结构去造轮子,不知不觉,你成了又一个轮子哥。

本期的资源分享,小营长将为大家带来的是《数据结构与算法》的视频学习教程和电子书籍。

视频学习

电子书籍

小伙伴们可以参照着视频和电子书籍一起学习。不过,小营长的建议是,小伙伴们自购一本纸质版的《数据结构与算法》的相关书籍并参照着视频教程来进行学习,这样会事半功倍喔!

你可能喜欢看

你可能喜欢看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190129G18DM800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券