五分钟学编程:如何学好数据结构与算法?程序员黄小斜

学习编程,数据结构是你必须要掌握的基础知识,那么数据结构到底是什么呢?

根据百度百科的介绍,数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

听听这是人话么,我帮你们翻译一下,其实数据结构就是用来描述计算机里存储数据的一种数学模型,因为计算机里要存储很多乱七八糟的数据,所以也需要不同的数据结构来描述。

了解了基本概念之后,接下来我们再来看看,为什么我们要学习数据结构呢?

在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。

许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。

选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。

也就是说,选定数据结构往往是解决问题的核心,比如我们做一道算法题,往往就要先确定数据结构,再根据这个数据结构去思考怎么解题。

如果没有数据结构的基础知识,也就没有谈算法的意义了,很多时候即使你会使用一些封装好的编程api,但你却不知道其背后的实现原理,比如hashmap,linkedlist这些Java里的集合类,实际上都是JDK封装好的基础数据结构。

我第一次接触数据结构这门课还是4年前,那这时候我在准备考研,专业课考的就是数据结构与算法,作为一个非科班的小白,对这个东西可以说是一窍不通。

这个时候的我只有一点点c语言的基础,基本上可以忽略不计,所以小白同学也可以按照这个思路进行学习。

数据结构基本上是考研的必考科目,所以我一开始使用的是考研的复习书籍,《天勤数据结构》和《王道数据结构》这两个家的书都是专门为计算机考研服务的,可以直接百度,这两本书对于我这种小白来说居然都是可以看懂的,所以,用来入门也是ok的。

最早的时候我并没有直接看书,而是先打算先看视频,因为视频更好理解呀,找视频的办法就是百度,于是当时找到的最好资源就是《郝斌的数据结构》这个视频应该是很早之前录制的了,但是对于小白来说是够用的,特别基础,讲的很仔细。

从最开始的数组、线性表,再讲到栈和队列,以及后面更复杂的二叉树、图、哈希表,大概有几十个视频,那个时候正值暑假,我按照每天一个视频的进度看完了,看的时候还得时不时地实践一下,更有助于理解。

好在大部分题目是有讲解的,看完讲解之后还能安抚一下我受伤的心灵。记住这本书,我在考研之前翻了至少有三四遍。

完成了第一波视频+书籍的学习之后,我们应该已经对数据结构有了初步的了解了,对一些简单的数据结构算法也应该有所了解了,比如栈的入栈和出栈,队列的进队和出队,二叉树的先序遍历和后续遍历、层次遍历,图的最短路径算法,深度优先遍历等等。

有了一定的基础之后,我们需要对哪方面进行强化学习呢?

当然,我当时主要是复习考研,所以还是针对专业课的历年真题来复习,像我们的卷子中就考察了很多关于哈希表、最短路径算法、KMP算法、赫夫曼算法以及最短路径算法的应用。

对于考卷上的一些知识点,我觉得掌握的并不是很好,于是又买了《王道数据结构》以及一些并没有什么卵用的书回来看,再次强化了基础。

于是我又在网上搜到了另一个系列视频《小甲鱼的数据结构视频》里面除了讲解数据结构之外,还讲解了更多经典的算法题,比如八皇后问题,汉诺塔问题,马踏棋盘,旅行商问题等,这些问题对于新手来说真的是很头大的,使用视频学习确实效果更佳。

纸上得来终觉浅,绝知此事要躬行。众所周知,算法题和数学题一样,需要多加练习,而且考研的时候必须要手写算法,于是我就经常在纸上写(抄)算法,你还别说,就算是抄,多抄几次也有助于理解。

很多基础的算法,比如层次遍历,深度优先遍历和广度优先遍历,多写几遍更有助理解,再比如稍微复杂一点的迪杰斯特拉算法,不多写几遍你可真记不住。

除了在纸上写之外,更好的办法自然是在电脑上敲了,写Java的使用Java写,写C++的用C++写,总之用自己擅长的语言实现就好,尴尬的是我当时只会c,所以就只好老老实实地用devc++写简单的c语言程序了。

至此,我们也算是学会了数据结构的基础知识了,至少知道每个数据结构的特性,会写常见的数据结构算法,甚至偶尔还能掏出一个八皇后出来。

《天勤数据结构》《王道数据结构》如果你要考研的话,这两本书可不要错过

严蔚敏《数据结构C语言版》这本书是大学本科计算机专业常用的教科书,年代久远,可以看看,官方也有配套的教学视频

《大话数据结构》官方教材大家都懂的,比较不接地气,这本书对于很多新手来说是更适合入门的书籍。

《数据结构与算法Java版》如果你是学Java的,想有一本Java语言描述的数据结构书籍,可以试试这本,但是这本书显然比较复杂,不适合入门使用。

《郝斌数据结构》这个视频上文有提到过,年代比较久远,但是入门足够了。

《小甲鱼数据结构与算法》这个视频比较新,更加全面,有很多关于经典算法的教程,作者也入驻了B站,有兴趣也可以到B站看他的视频。

以上资源都可以免费领取,在我的公众号【程序员黄小斜】回复“数据结构”即可免费领取对应的资料目课、面试课等内容。

THE END
1.数学算法启蒙app下载数学算法启蒙app官方版v1.1数学算法启蒙app,一款很好的数学启蒙的软件,平台上的资源和学习内容都是可以在这里分享的,有什么需要的可以在这里完成,推荐的内容是超级周到的,孩子们能够完成轻松的学习。 软件特色: 能够为你带来最全面的数学知识学习,让你能在暑假的时候尽情的完成各类家庭作业; 拥有众多的数学工具,如计算器以及各类公式辅助服务https://www.i5xt.com/down/164209.html
2.平台数据结构与算法课程设计图算法答案头歌实践教学平台app其次是原型设计作品和软件开发成果,因为原型设计相对简单,基本还原原型设计的各模块需求,加上基本的交互效果,软件开发呈现的效果相较于原型设计更加美观,但是一些想实现的动画没有实现,代码实现方面比想象的难度也存在一定差距,经常就是每增加一个需求或者是一个函数,就会产生各种各样的bug,代码五分钟,bug两小时,但是究https://blog.51cto.com/u_16099297/9018247
3.BoostKit大数据业界趋势鲲鹏大数据组件增强特性和典型配置鲲鹏BoostKit CDN使能套件聚焦CDN开源组件可用性和CDN缓存节点吞吐量低、时延大等问题,提供CDN主流组件的开源使能和性能调优指南,通过使能鲲鹏处理器内置的RSA加速引擎,对RSA2048算法进行硬件卸载,同时提供了NUMA优化等手段,以便充分发挥鲲鹏处理器多核优势,助力客户CDN缓存节点提供更大吞吐量,实现更低时延。 https://developer.huawei.com/consumer/cn/blog/topic/03898238728230088
4.构建VMware混合云平台开发高速数据包捕获算法 运行第三方快速路径堆栈 提供软件预取,通过提前将数据从内存传输到缓存来提高性能 采用并受益于 DPDK 的 VMware 基础设施组件包括 VMXNETVMware Cloud on AWS 还可以根据 CPU、内存和存储需求自动调整节点规模。一般情况下,节点在几分钟能就可以自动完成规模扩大或缩小。https://www.intel.cn/content/www/cn/zh/cloud-computing/building-a-vmware-hybrid-cloud-platform.html
5.书法书写规则范文五、结语 本文主要介绍了关联规则和协同过滤算法在图书推荐方面的应用,在图书应用方面,我们可以巧妙运用图书分类的特点,缩小候选图书集,从而提高图书推荐的效率3、根据学校安排的写字教学计划,合理安排学生每天的练习内容,可以结合所学例字进行举一反三练习,每周至少有1节课(20分钟)评讲学生作业,要展示优秀作业。 https://www.youfabiao.com/haowen/38971.html
6.五分钟学算法链接直达手机查看 GitHub 42000 Star,全球排名 79 。小吴讲算法,图解面试算法,来和程序员小吴一起学算法吧,学习如何刷力扣(LeetCode),掌握如何学习数据结构。五分钟学算法官网,一个算法学习的网站,图解力扣算法,看动画,刷力扣,备面试,跳槽涨薪美滋滋。https://www.toolmao.com/sites/1338.html
7.五分钟学算法个人介绍 公众号【五分钟学算法】个人网站:https://www.cxyxiaowu.com 他关注的专题/文集/连载 他喜欢的文章 他创建的专题 LeetCodeAnimation 五分钟学算法 在PPT动画中学算法 从零开始学Swift 他的文集 日记本 新媒体管家发布 五分钟学算法 Python https://www.jianshu.com/u/c6ad3f2ed2d6
8.适合50岁以上的居家降养生课,每天30分钟,帮你改善失眠睡好觉关于第三方SDK的身份、收集个人信息的目的、方式、范围等情况,请您详细参见本政策的附件2《APP涉及个人信息传输的SDK情况表》。在您使用第三方提供的服务前在某些业务功能中,我们可能仅依据信息系统、算法等在内的非人工自动决策机制做出决定。如果这些决定显著影响您的合法权益,您有权要求我们做出解释,我们也将在https://www.360doc.cn/mip/1125867229.html
9.吴师兄学算法五分钟学算法吴师兄学算法(www.cxyxiaowu.com)提供许多数据结构与算法学习的基础知识, 涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。https://www.cxyxiaowu.com/
10.五分钟学算法青少年人工智能资源与创新平台五分钟学算法授课教师:王晓茹价格免费学习有效期 长期有效 免费加入 简介 学习目录简介 缜密的思维,形象的语言,妙绝的思路,再难的算法,也能信手拈来,娓娓道给你听! 王晓茹,博士,任教于北京邮电大学计算机学院,副教授、硕士生导师。曾在美国MIT(麻省理工学院)和美国PSU(波特兰州立大学)访问学习。现任中国人工智能https://yuanzhuo.bnu.edu.cn/goods/show/33
11.五分钟学算法五分钟学算法浏览人数已经达到0,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:五分钟学算法的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评估一个站的价值,最主要还是需要根据您自身的需求以及需要https://www.colabug.com/sites/13534/
12.比特币BTC是什么?为何有价值?2024比特币投资教学比特币区块链数位加密货币的概念最先于1998年由Wei Dai在线上论坛Cypherpunks的电邮通讯中所提出,他相信使用密码学原理的应用将可以促成社会变革并且提高信息时代的隐私水平。简单来说,「加密货币」一词是指一组使用密码学(一种对资料进行编码和解码的科学实践)来保护和验证交易的数位资产,这些交易通常透过称为区块链的分散式帐本技https://www.jb51.net/blockchain/953792.html
13.学吧导航四十万学习爱好者都在用的学霸导航网站学吧导航,超过四十万学习爱好者都在用的专业学习网址大全学霸导航,汇集了国内外优质的学习网站和平台。网站囊括了综合平台、外语学习、编程算法、电脑办公、百科知识、设计剪辑、音乐艺术、文史哲理、医学政经、演讲座谈、数理化生等10余项分类,收录了上百个个优质的国内https://xue8nav.com/
14.每天五分钟机器学习:聚类算法中经常使用的肘部法则是什么?如何选择聚类的数目K,也就是说我们要将数据聚成几簇。我们可以通过可视化的方式(画图),或者聚类算法的输出结果(试一试)来手动的决定聚类的数目,或者根据实际需要来确定我们想要聚成几簇,比如前面的衣服问题。 肘部法则 对于肘部法则,我们所需要做的是改变 k 值,也就是聚类类别的数量。我们对不同的k来计算代价函数,https://download.csdn.net/blog/column/10047693/128174719
15.算法五分钟算法小知识:学习数据结构和算法的框架思维收藏 https://developer.aliyun.com/ask/283137
16.智东西早报:工信部五大方面推动VR发展陆奇现身回复离职原因5月21日消息, 2018 微软人工智能大会在北京召开,微软全球执行副总裁、微软人工智能及微软研究事业部负责人沈向洋博士宣布,微软将充分发挥其在人工智能领域的技术和资源,与中国产、学、研各界展开全方位合作,并推出了在线人工智能学院;与此同时,微软将认知服务扩展到智能边缘,推出ONNX项目及ML.NET开源跨平台人工智能开https://zhidx.com/p/118975.html
17.吴师兄学算法五分钟学算法吴师兄学算法 (www.cxyxiaowu.com) 专注于提供数据结构与算法学习的基础知识,涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。它是一个非常有用的资源平台,特别适合那些希望提高编程技能和算法理解能力的学习者。 吴师兄学算法-五分钟学算法_致力于让每个小白都能看懂每一道算法题 https://pidoutv.com/sites/27782.html
18.全网最全程序员学习网站汇总,还不赶快收藏地址: 五分钟学算法 简介:有少量非常不错的数据结构、算法相关的内容。 推荐指数:? 13、犬小哈教程网 地址: 犬小哈教程网 简介:少量哈士奇的技术问答漫画很有意思。 推荐指数:? 15、原创技术大联盟 地址: 原创技术大联盟 简介:优秀的技术博主实在太多了,列不完,也看不完,这里有一个导航页https://www.songma.com/news/txtlist_i66992v.html
19.深度解读《原则》:掌握更高次的思考方式接下来我们来讨论,我们从达利欧的人生原则中可以学到的五条原则。 三、达利欧人生原则第1条: 做一个超级现实的人 达利欧人生原则的第一条是:做一个超级现实的人(Be a hyperrealist)。 你要用自己的眼睛看到真正的现实,不是让自己头脑中想象、理论扭曲现实。根据马浩教授的转述,管理大师彼得·德鲁克曾经赞扬美国前https://www.36kr.com/p/5119172.html
20.05月19日随着GPU应用到越来越多的场景中,不同场景算法对于GPU的利用率和需求都有不同,这样的话沿用之前的粗颗粒用户日均使用时长攀升至87分钟,环比提升10分钟;而社区月均互动数则高达49亿次,为去年同期的三倍之荣耀路由3的配置方法很简单,在手机里连接路由器的Wi-Fi,然后使用华为智慧生活APP,就会弹出配置提醒,按照https://news.mydrivers.com/blog/20200519.htm
21.五分钟快速了解EM算法腾讯云开发者社区五分钟快速了解EM算法 每日英文 There is a wholeness about the person who has come to terms with his limitations. 人生的完整在于一个人知道如何面对他的缺陷。 Recommender:云不见 作者:刘子仪 编辑:王萌 (深度学习自然语言处理公众号) EM算法是机器学习中比较重要的用于对于带有隐变量的联合概率模型参数进行https://cloud.tencent.com/developer/article/1692473