索引算法

2021-08-15  本文已影响0人  突击手平头哥

索引算法介绍

线性查找

线性查找就是最简单的查找算法,在一个数组或者链表从头到尾遍历查找,时间复杂度是o(n)

二分查找

二分法.gif

二分法相比于线性查找时间复杂度降低到了o(logn)级别,但是添加了一些限制

二叉搜索树

二分搜索树.png

二分法的缺点就是必须支持随机访问,但是对于数组而言如果进行插入操作的话时间复杂度是o(n)级别;二分搜索树就是结合了二分法和链表的优势实现的,二分搜索树有如下特点

平衡搜索树

平衡二叉树本质上还是二分搜索树,只不过平衡二叉树约束了左子树和右子树的高度,比如红黑树要求任意节点左右子树的高度差不能超过1

二分搜索树在左右子树极不平衡的情况下会退化成链表,平衡二叉树就是为了解决此问题的

B树

平衡二叉树有两个问题:

B树.png

B树是类似于图中这样的树,它是结合了线性查找和二分搜索树的特点而来的:


备注:普通的二叉树或B树每个节点存储的就是整数,这个整数既是节点的数据也是节点用来索引/排序的标记;但是在真正的场景中如MySQL中,一项数据包括很多内容而索引可能只是其中一项。

B+树

B树同样存在问题,就是在范围查找时非常困难

B+树.png

B+树和B树的区别在于

上一篇下一篇

猜你喜欢

热点阅读