1. 顺序查找
说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。
基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。
复杂度分析:
查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+n) = (n+1)/2 ;
当查找不成功时,需要n+1次比较,时间复杂度为O(n);
所以,顺序查找的时间复杂度为O(n)。
2. 有序表查找
前提时有序序列!
2.1 二分查找
使用二叉查找树(BST)
2.2 插值查找
打个比方,在英文字典里面查“apple”,你下意识翻开字典是翻前面的书页还是后面的书页呢?如果再让你查“zoo”,你又怎么查?很显然,这里你绝对不会是从中间开始查起,而是有一定目的的往前或往后翻。
同样的,比如要在取值范围1 ~ 10000 之间 100 个元素从小到大均匀分布的数组中查找5, 我们自然会考虑从数组下标较小的开始查找。

2.3 斐波那契查找
待续
3. 线性索引
参考大话数据结构
4. 树索引
BST,二叉排序树
多叉树,红黑树等等排序树
5. 哈希
5.1 构造方式
直接定址
数字分析
平方取中
折叠
除留余数
随机数
5.2 散列冲突处理
开放定址
再散列函数
链地址
公共溢出区

被折叠的 条评论
为什么被折叠?



