关于查找、搜索算法

2018-07-20  本文已影响11人  XDgbh

一、顺序查找,遍历元素查找,线性查找


大话数据结构

二、有序且顺序存储的快速查找

2.1、二分查找、折半查找
2.2、插值查找
2.3、斐波那契查找、黄金分割查找


》【总结】
1、数据分布比较均匀,用插值查找
2、数据分布不均匀且大量时,用斐波那契(黄金分割)查找会比二分查找效率高一点
3、图省事就用二分查找,写代码简单

三、线性索引查找

3.1、稠密索引
3.2、分块索引

3.3、倒排索引——最基础的网页搜索技术


四、二叉排序树(Binary Sort Tree——BST)二叉搜索树

4.1、二叉排序树的构建

借用二叉树的插入操作来进行构建。在C++中可直接使用set集合,底层也是个二叉排序树(红黑树)


4.2、二叉排序树的插入

要先用二叉排序树的查找操作,判断当前树是否已经存在这个关键字,若是已经存在就不插入了。若是不存在,则根据查找返回的节点当做父节点,再根据小左,大右原则插入。


4.3、二叉排序树的查找

4.4、二叉排序树删除节点

删除节点比较重要,先是要用到查找,找到后在删除(free释放内存)该节点之前还要安排好周围节点的关系,即需要重新调整二叉树,使得满足(左小右大)中序遍历后是排序。即要保证删除该节点后,剩下的节点还能是一个二叉排序树。







image.png
上一篇 下一篇

猜你喜欢

热点阅读