本文最后更新于389 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
1.2.3为线性表查找
1、顺序查找(略)
2.二分查找(折半查找)
假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
注意,这里的前提条件是表中的元素是有序的,才能够使用二分查找算法。
3.分块查找
分块查找又称索引顺序查找,是对顺序查找的一种改进方法。在此查找方法中,除了表本身外,还需要建立一个索引表。对表进行分块,分成几个子表,将子表中的索引保存至索引表,索引表按关键字有序,则分块有序,即前一个子表中所有元素均小于后一个子表中所有元素(大于同理)。
4.树表查找
二叉排序树
平衡排序树(RR LL RL LR调整)
B树(m叉平衡排序树)
B 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下:
- 根节点至少有两个孩子 。
- 每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子。
- 每个叶子节点 至少有 M/2-1(上取整)个关键字,至多有 M-1 个关键字。并以升序排列。(注:叶子节点是没有孩子)
- key[i] 和 key[i+1] 之间的孩子节点的值介于 key[i] 和 key[i+1] 之间。
- 所有的叶子节点都在同一层。
B+B-树
5.散列表(哈希表)查找