数据结构与算法介绍与学习路线

活动地址:CSDN21天学习挑战赛

一、什么是数据结构与算法

程序 = 数据结构 + 算法,足以看出他们的重要性,但感觉平时编程没有刻意用到他们,其实这只是感觉,代码的字里行间无不在使用。

一个常见的心理路程就是:

  1. 开始学习时,感觉他们没什么用,平时敲代码也用不到,没有在代码里刻意设计过
  2. 学习一段时间,发现以前写代码都在悄悄的用到,然后开始刻意按照规则设计代码
  3. 时间久了,又感觉没有用到了,其实是在下意识的用了,只是用的时候没有刻意贴上“数据结构与算法”的标签

就像《论语》中说的,三十而立,四十不惑,,,直到随心所欲不逾矩。

1. 数据结构

在这里插入图片描述

逻辑结构:数据元素之间的逻辑关系。

存储结构:一组数据的存储结构。(数据在内存中是以何种方式存储的)

2. 算法

操作数据的一组方法。

算法的设计取决于逻辑结构,算法的实现依赖于存储结构。

3. 数据结构与算法

数据结构是为算法服务的,算法要作用在特定的数据结构之上。无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。

二、常见数据结构与算法

10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;

10 类算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

要学习它的“来历”、“原理”、“自身的特点”、“适合解决的问题”以及“实际的应用场景”。

三、学习方法(仅供参考)

1. 大致了解

在正式学习之前,建议大致了解一下 “数据结构与算法” 的知识框架,包括哪些内容,著名应用等。

可以自己画一下思维导图,让知识框架在心里有个初步印象(所以说第一印象还是蛮重要的,哈哈)。

2. 视频和书

不推荐一开始就看书,可以去B站找一下视频,然后跟着视频学习,最好理解一个知识点后自己写代码验证练习一下。

书只作为辅助,有不懂的知识点看书帮助理解。

3. 练习

实践是检验真理的唯一标准,能不能写出能跑能用的稳定代码是检验你会不会的最好方法。

GitHub或Gitee建个仓库,把自己的实践代码传上去,最好是个有价值的项目。

4. 输出

自己会做只是会了而已,不代表完全理解了,能讲出来并且讲明白,通俗易懂,才是真正吃透了知识。

而且在输出的同时,还会发现自己的不足或新的理解。

所以建议学的差不多了,写个教程,写的过程中对自己的知识结构查缺补漏。

四、学习资源(有更好的资源欢迎评论区补充)

1. 书

不推荐某一本书,建议几本书对比看,虽然知识点一样,但不同书的讲解方法不一样,每个人对不同方法的理解程度不一样,对比起来更容易理解。

比较经典的:

  1. 数据结构(C++语言版·第3版)邓俊辉数据结构习题解析(第3版)
  2. 数据结构与算法分析
  3. 数据结构(C语言版)严蔚敏/吴伟民

比较通俗易懂的:

  1. 我的第一本算法书
  2. 算法图解
  3. 漫画算法:小灰的算法之旅
  4. 漫画算法2:小灰的算法进阶

2. 在线教程

  1. C语言中文网-数据结构
  2. C语言网-数据结构教程

3.视频

  1. 中国大学MOOC-浙江大学-数据结构
  2. B站-小甲鱼-数据结构和算法
  3. B站-青岛大学-王卓

4. 可视化

部分算法的过程可视化,辅助理解

  1. VisuAlgo
  2. Data Structure Visualizations
  3. binarytrees , 该项目源码 -> github
  4. b-tree
  5. algorithm-visualizer
  6. bigocheatsheet
  7. Algorithms-DataStructures-BigONotation

5. 刷题

  1. 牛客网
  2. 七月在线
  3. LeetCode

猜你喜欢

转载自blog.csdn.net/maizousidemao/article/details/126213053
今日推荐