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

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

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

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

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

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

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

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

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

如果没有数据结构的基础知识,也就没有谈算法的意义了,很多时候即使你会使用一些封装好的编程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.这才是你最想要的数据结构与算法学习路线四、数据结构与算法怎么学 数据结构与算法的学习,简单而言就是: 学习对应的专题知识点,刷对应专题的题。 前半句属于理论学习,后半句属于实战演练,数据结构与算法怎么学?就按照这两部分来学。 1、理论学习 理论学习就是学习对应的专题知识点,一般就是看视频和书籍。 https://zhuanlan.zhihu.com/p/582109772
2.数据结构与算法(非常详细)从零基础入门到精通,看完这一篇就够了(1)特点:采用链式存储(广义表的数据元素可以具有不同的结构) 七、树和二叉树 1、树 术语: 结点(包含数据和分支)、结点的度(结点的子树数)、树的度(树中各结点度的最大值)、叶子(度为零)、分支结点(度不为零)、兄弟结点、层数、树的深度(高度)、森林(零或者有限棵互不相交的树的集合)、有序树(结点的子树从https://blog.csdn.net/2401_84240189/article/details/138821288
3.什么是数据结构?什么是算法?怎么学习数据结构与算法?怎么学习数据结构与算法? 01 前言 学习算法,我们不需要死记硬背那些冗长复杂的背景知识、底层原理、指令语法……需要做的是领悟算法思想、理解算法对内存空间和性能的影响,以及开动脑筋去寻求解决问题的最佳方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
4.怎么学习数据结构与算法00:00/00:00 怎么学习数据结构与算法 IT老邪讲编程发布于:辽宁省2023.05.30 22:17 分享到https://learning.sohu.com/a/680501133_121730054
5.数据结构应该怎么学?51CTO博客数据结构与算法有用么? 这里我摘录了一个知乎的高赞回答给大家做参考: ? 个人认为数据结构是编程最重要的基本功没有之一!学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会想到双向链https://blog.51cto.com/u_15185954/3034379
6.如何学习数据结构和算法Trie是另一种可以快速搜索前缀/子字符串的树。Disjoint Sets是一种特殊类型的集合,它将其成员分隔成不重叠的子集,对联合查找算法很有用。跳跃列表是LinkedList的优化版本,它减少了查找特定节点所需的时间。 基本的搜索/遍历算法 所有的数据结构都是用来保存信息的。有些结构需要特殊的方式来有效地访问这些信息,这比简https://www.jianshu.com/p/8231f94121c1
7.《学习JavaScript数据结构与算法第3版》([巴西]洛伊安妮·格罗纳数据结构与算法教程书籍 用JavaScript深度学习常用的数据结构与算法核心技术 高效解决计算机网络编程常见问题 作者:[巴西]洛伊安妮·格罗纳(LoianeGroner)出版社:人民邮电出版社出版时间:2019年05月 手机专享价 ¥ 当当价降价通知 ¥46.30 定价 ¥69.00 http://product.dangdang.com/27872612.html
8.学习JavaScript数据结构与算法(格罗纳)中文pdf完整版[10MB]电子书《学习JavaScript数据结构与算法》首先介绍了JavaScript语言的基础知识,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、顺序搜索、二分搜索,还介绍了动态规划和贪心算法等常用的高级算法及相关知识。 https://www.jb51.net/books/532592.html
9.2022数据结构与算法《王道》学习笔记(十一)KMP算法详细归纳简介:2022 数据结构与算法《王道》学习笔记 (十一)KMP算法 详细归纳总结 改进的模式匹配算法 前言 KMP算法参考博客 暴力模式匹配算法的最坏时间复杂度为O(nm),其中n和m分别为主串和模式串的长度。 改进的模式匹配算法——KMP算法 上图的匹配过程,在第三趟匹配中,i=7、j=5的字符比较不等,于是又从i=4、j=https://developer.aliyun.com/article/1315912
10.算法数据结构体系学习班马士兵教育官网注意原“算法与数据结构基础班”已经过期。所有内容都被现在的“算法数据结构体系学习班”重新讲述,还增加了内容,增加了题目练习。原“算法与数据结构基础班”的所有内容,对应现在的“算法数据结构体系学习班”的1-23节。 注意原“算法与数据结构进阶班”已经过期。所有内容已经被现在的“算法数据结构体系学习班”和“https://www.mashibing.com/course/339
11.前端学数据结构与算法(六):二叉树的四种遍历方式及其应用上一章我们从0到1的实现了一颗二叉搜索树,以及理解了二叉搜索树的特性与基本操作,这一章介绍关于二叉树的更多操作,也就是树的遍历。主要包括前序遍历、中序遍历、后序遍历、层序遍历,前面三种也叫深度优先遍历(DFS),最后的层序遍历也叫广度优先遍历(BFS),理解这四种遍历方式的不同,再遇到树相关的算法问题时,也https://cloud.tencent.com/developer/article/1709410
12.书单豆瓣高分&全网热评的算法神作本书结合竞赛实例,从数据结构、算法策略、时间复杂度与空间复杂度优化等多个角度,对各类经典问题进行求解,重点讲解了如何分析问题和解决问题,并提供了优化过程,引导读者进行刷题实战,进而提高算法思维能力,以更高的视角看待问题。http://www.broadview.com.cn/article/420385
13.北京林业大学《数据结构与算法》课件PPT期末总结.pptx北京林业大学《数据结构与算法》课件PPT 期末总结.pptx,北京林业大学信息学院 数据结构期末总结 Office: 西配楼304(软件教研室) 北京林业大学信息学院 2021年5月6日 1、选择题 2、判断题 3、填空题 4、应用题 5、算法设计题(程序填空和编写程序) 期末考试题型 2021年5月https://max.book118.com/html/2021/0506/6003214113003144.shtm
14.数据结构与算法大致会学些什么内容?会涉及道那些知识点?数据结构与算法,是计算机科学领域的基石。在这个领域中,我们主要学习的是基本的数据结构和算法。数据结构包括但不限于线性表、堆栈、队列、树等,这些都是组织数据的方式。通过这些结构,我们能够高效地存储和管理数据。例如,堆栈和队列用于任务调度,树用于文件系统组织。算法方面,我们涉及排序算法、查找https://zhidao.baidu.com/question/1651039866385746660.html