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 ! 大牛:你真的懂反射吗?
在看点这里好文分享给更多人↓↓