动态图展示 6 个常用的数据结构,一目了然!

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者丨zglg 

来源丨Python与算法社区 (alg-channel)

数据结构的确很枯燥,尤其是初学时候,不知道到底有啥用。不过随着编码年限的增长,我们越会发现它真的很有用,巧妙的数据结构是算法高效实现的助推剂。

今天的文章不会用文字和静态图展现常用的数据结构,因为这种普遍的讲解在博客、书籍太多了,根本不需要我在这里啰里啰嗦。

今天我们使用动态图,展现最最基本的、常用的数据结构,让我们起航吧!

1 线型数组

线型数组最好理解,就是逐个插入元素,逐个删除元素,有严格的顺序。

2 栈

栈遵循先进后出,后进先出,本动态图使用链表实现栈:

3 队列

使用数组实现的队列,先进队列的,在执行 Dequeue 操作时,会先出队。如下,元素5是第一个入队的,所以Dequeue 操作发生时,第一个出队:

使用链表实现的队列:

4 线性查找

线性查找的关键码如果位于序列后部,查询性能就会变差。如下查找 735 时,几乎快搜索一遍:

5 二分查找

二分查找,每次搜索都会使区间减半,性能更好。每次查找,灰色显示的区间表示关键码不可能位于的区间。

6 二分查找树

二分查找树的左子树都小于根节点,右子树都大于根节点。

节点插入过程如下,依次在原有树中插入节点值等于 1,4,7,3的节点 

节点删除过程如下,依次删除值等于 4 的节点, 值等于 5 的节点,等于 10 的节点,注意观察调整过程,如何保证删除节点后依然是一颗二叉查找树的。

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

近期精彩内容推荐:   从培训机构出来的程序员,后来都怎么样了? 今年51长假给HR表白了,结果... 再见了, VS Code ! 大牛:你真的懂反射吗?

在看点这里好文分享给更多人↓↓
该资源包含了几乎所有的数据结构的动画视频,帮助我们更好的理解数据结构与算法的编程思路。 目录如下: 'B树的删除.swf', 'B树的生长过程.swf', '三元组表的转置.swf', '中序线索化二叉树.swf', '串的顺序存储.swf', '二分查找.swf', '二叉排序树的删除.swf', '二叉排序树的生成.swf', '二叉树的建立.swf', '克鲁斯卡尔算法构造最小生成树.swf', '冒泡排序.swf', '分块查找.swf', '单链表结点的删除.swf', '单链表结点的插入.swf', '图的深度优先遍历.swf', '基数排序.swf', '堆排序.swf', '头插法建单链表.swf', '寻找中序线索化二叉树指定结点的前驱.swf', '寻找中序线索化二叉树指定结点的后继.swf', '尾插法建表.swf', '希儿排序.swf', '开放定址法建立散列表.swf', '归并排序.swf', '循环队列操作演示.swf', '快速排序.swf', '拉链法创建散列表.swf', '拓扑排序.swf', '最短路径.swf', '朴素串匹配算法过程示意.swf', '构造哈夫曼树的算法模拟.swf', '构造哈夫曼树过程.swf', '栈与递归.swf', '树、森林和二叉树的转换.swf', '桶式排序法.swf', '直接插入排序.swf', '直接选择排序.swf', '邻接表表示的图的广度优先遍历.swf', '邻接表表示的图的深度优先遍历.swf', '顺序查找.swf', '顺序栈(4个存储空间).swf', '顺序栈(8个存储空间).swf', '顺序表的删除运算.swf', '顺序表的插入.swf', '顺序队列操作.swf'。 (注:.swf动画格式可直接使用播放器打开。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值