您的位置:首页 > 编程语言 > C语言/C++

【C++研发面试笔记】18. 常用算法-查找算法

2016-10-03 21:40 295 查看

【C++研发面试笔记】18. 常用算法-查找算法

查找算法一般是跟排序算法相关,本节主要介绍五类常用查找算法。其中,顺序查找是纯粹的查找方法,二分查找是依据已排序序列进行的快速查找方法,后三种都多少涉及到先排序再查找的策略。

18.1 顺序查找算法

顺序查找没有什么特别之处,就是从头到尾搜索一遍,算法复杂度为O(n)。

18.2 二分查找算法

二分查找算法又名折半查找,原理就是二分法,其一般针对于顺序排列的数据,算法复杂度为O(logN)。



18.3 分块查找算法(桶查找)

以增加空间复杂度为代价(存储每块中的最大值已经最大值的位置),为原数组做一个索引(索引本身是递增有序的),这样先查索引,再查块内位置。如果索引的选择科学有效,则可以获得比顺序查找快的速度。

18.4 二叉排序树上的查找

由如何改进二分查找的缺陷(插入和删除操作需要移动大量的数据)而得出的一种算法,用二叉排序树存储数据,由于二叉树的插入和删除操作的时间复杂度相对低,而且也支持二分查找,所以在动态数据查找方面优于二分查找。

18.5 散列技术下的查找

将元素的值和其位置直接对应,对应的方法就是散列函数(如平方取中,除余法等等);然而再好的散列函数也会引起冲突,则解决冲突的方法是如拉链法,线性探测法,二次探测法等等。

这篇博文是个人的学习笔记,内容许多来源于网络(包括CSDN、博客园及百度百科等),博主主要做了微不足道的整理工作。由于在做笔记的时候没有注明来源,所以如果有作者看到上述文字中有自己的原创内容,请私信本人修改或注明来源,非常感谢>_<
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息