1 线性搜索

线性搜索是一种从数组中搜索元素的算法。

即从头开始按顺序与要搜索的元素比较。

当数据量很大时,比较次数会增加,需要更多的时间。

2 二分搜索

二分搜索是一种从有序数组中搜索元素的方法。

比如:数组 [1, 2, 3, 4, 5, 6, 7, 8, 9],查找6

  • 第一次:找到中间数5,与6比较,找到一半;
  • 第二次:找到7,与6比较,剩下6;
  • 第三次:6与6比较,相等,OK。

二分搜索利用已经排序的数组,通过将搜索数字减半而有效的搜索数字。

插值搜索

计算中间值不同:

  1. mid = low + (key-a[low])/(a[high]/a[low])*(high-low)

斐波那契查找

利用黄金分割查找,大意是从斐波那契数列中找到你要找的值位置,然后再去给定数组中查找。

3 广度优先搜索

广度优先搜索是搜索图的算法。

广度优先搜索具有从起点开始依次广泛搜索的特征。

从第一点开始,将可到达点作为候选点,然后依次到达候选点,将候选点的候选点也依次作为候选点,以此类推,直到到达搜索点为止。

4 深度优先搜索

深度优先搜索是搜索图的算法。

深度优先搜索具有深入挖掘待定路径来进行搜索的特征。

从第一点开始,将可到达点作为候选点,然后一直搜索一个候选点,直到到达搜索点为止。

5 索引

线性索引、树形索引和多级索引。

5.1 线性索引

  • 稠密索引
  • 分块索引
  • 倒排索引

稠密索引

在线性索引中,将数据集中的每个记录对应一个索引项。

6 平衡二叉树

基本思想:

在构建二叉排序树的过程中,每当插入一个节点时,先检查是否因插入而破坏了数的平衡性,若是,则找出最小不平衡子树,调整成平衡子树。

7 多路查找树

其每一个节点的孩子数可以是大于两个,且每一个节点处可以春初多个元素。

形式:

  • 2-3树
  • 2-3-4树
  • B树
  • B+树

B 树是一种平衡的多路查找树,2-3树和2-3-4树都是B树的特例。