数据结构大总结!

简介: 而所谓数据结构,是数据的组织、管理和存储格式。简单理解的话,数据结构就是执行算法的“原材料”。


前几天,小灰给大家介绍了什么是算法

说到算法,就不能不说起数据结构。今天我来讲一讲,什么是数据结构?程序员怎么学好数据结构?

我们介绍算法的时候说过,计算机当中的算法,本质就是一系列程序指令,用以解决特定的运算和逻辑问题。

而所谓数据结构,是数据的组织、管理和存储格式。简单理解的话,数据结构就是执行算法的原材料

俗话讲,巧妇难为无米之炊。算法,就好比是聪明勤劳的女主人,而数据结构,就是用来做饭做菜的柴米油盐。

 

数据结构都有哪些组成方式呢?


 

首先,是线性结构

但凡有过一点编程基础的小伙伴,肯定都知道数组,这就是一种典型的线性数据结构。

 

640.png

 

除了数组以外,链表也是一种重要的数据结构。Java集合框架中的LinkList类,底层实现就是链表。

640.png

以数组或者链表为基础,可以封装出两种数据结构,一个是栈,它的特点是先进后出;另一个是队列,它的特点是先进先出。栈和队列,可以满足不同的特定需求。

640.png640.png


其次,是



树,是一类一对多的数据结构,天生就非常适合用来检索。Java集合框架当中有一个TreeMap类,用于存储键和值的映射,不但查找很高效,还能保证键的有序排列。它的底层实现就是一种名为红黑树的特殊二叉树。

640.png

 

另外,我们操作系统当中的文件索引,有很多都是用B实现的。

640.png

而我们常用的MySQL数据库,以B+作为常用索引。



640.png

 

再其次,是



图,是一类多对多的数据结构,非常适合用于表述众多对象之间的复杂关系。大家肯定都乘坐过地铁,一个城市的地铁交通线路,站与站之间形成的关联,就是一个图结构。



640.png

 

在一群人之间,有着复杂的人际交往关系,他们所形成的的关系网络也是一个图结构。

640.png

 

在图的基础上,产生了许多实用的算法。比如,我们用百度地图或者高德地图进行导航的时候,背后就是图的最短路径算法

 

最后,还有一些复合数据结构


 

比如咱们常用的哈希表,它的组成就是数组和链表的结合。

640.png

 

 

还有一种比较有意思的数据结构叫做跳表,它在普通链表的基础上,增加了很多个索引层。Redis当中的集合 sortedSet,背后的数据结构就是跳表。

640.png

复合数据结构,往往结合了多种基础数据结构当然优势,在特定的场景下非常有用。

这就是数据结构的几种组成方式,大家可以把这张图保存一下。由于篇幅原因,图里面所列出的具体数据结构,只是最最常用的几种,并非全部。

 

640.png


那么,我们该如何学好数据结构呢?


 

就像学习算法一样,我们同样可以通过看书、看网上的视频课程,来了解常用的数据结构原理。

入门级别的书,比较推荐程杰老师的《大话数据结构》,以及我自己出版的《漫画算法》系列。

进阶级别的书,推荐看看《算法4》、《算法导论》。

课程的话,推荐极客时间王争老师的《数据结构与算法之美》,讲的非常全面。

此外,我们也可以动手去写代码,自己实现数据结构的基本功能,这样印象会很深刻。

像红黑树这么复杂的数据结构,一上来可能很难直接写出来。我们可以从简单的开始,比如尝试实现一个链表的添加节点和删除节点功能,比如实现二叉树的前序、中序、后序遍历,等等。

最后,有些网站,会提供可视化的数据结构演示,非常生动。小伙伴们可以去这些网站看看。比如visuAlgo这个网站,就有着很丰富的案例。

 

 640.png

大家还关注过哪些算法与数据结构的教学网站,也欢迎在留言区写出。

好了,关于数据结构,我就给大家介绍到这里。如果觉得这篇文章对你有帮助,希望可以点个在看点个赞,感谢大家~~


 

相关文章
|
2月前
|
存储 C++
c++数据结构
c++数据结构
29 0
|
4月前
|
NoSQL 容器 消息中间件
数据结构 2.2.3
数据结构 2.2.3
|
17天前
|
存储 算法 C#
C#编程与数据结构的结合
【4月更文挑战第21天】本文探讨了C#如何结合数据结构以构建高效软件,强调数据结构在C#中的重要性。C#作为面向对象的编程语言,提供内置数据结构如List、Array和Dictionary,同时也支持自定义数据结构。文章列举了C#实现数组、链表、栈、队列等基础数据结构的示例,并讨论了它们在排序、图算法和数据库访问等场景的应用。掌握C#数据结构有助于编写高性能、可维护的代码。
|
2月前
|
存储 算法
【数据结构】什么是数据结构?
【数据结构】什么是数据结构?
13 0
|
6月前
|
存储 算法 容器
数据结构 > 什么是数据结构?
数据结构 > 什么是数据结构?
|
6月前
|
算法 Python
02 数据结构
02 数据结构
20 0
|
7月前
|
存储 算法 搜索推荐
【BaseArray 数据结构】
【BaseArray 数据结构】
|
9月前
|
存储
|
9月前
|
存储 机器学习/深度学习
|
存储 算法 安全
【数据结构】C#实现常用数据结构总结
自行整理的C#常见数据结构笔记。
323 0
【数据结构】C#实现常用数据结构总结