查找算法(七大查找算法)

顺序查找

顺序查找适合线性表,比如说数组和链表这种线性存储结构的。

时间复杂度为O(n)

二分查找

要查找的元素必须是有序的

时间复杂度为O(logn)

插值查找

对于差值查找来说,二分查找更近似于一种傻瓜式的查找方式。因为二分查找每次都从mid开始的,这样比较呆,没有很大的自主性。

因此对于差值查找:mid=low+(key-a[low])/(a[high]-a[low])*(high-low),这种方式来自适应选择,减少比较次数

二叉查找树(BST)

二叉查找树的性质:

  1. 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  2. 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  3. 任意节点的左、右子树也分别为二叉查找树。

它和二分查找一样,插入和查找的时间复杂度均为O(logn),但是在最坏的情况下仍然会有O(n)的时间复杂度。

红黑树

B树和B+树

分块查找

分块查找是有序查找的一种改进吧,即把元素放到不同的块儿中。每一块儿中的节点不必有序,但是块与块之间必须有序

即第一块任意元素的关键字都必须小于第二块任意元素的关键字。

先用二分查找到在那一块,然后再进行顺序查找。

哈希查找

key - value键值对,是一种时间换空间的算法。

评论区 0