天天看点

布雷特·哈特透露不为人知一事 原来一摔角界天王级人物是他推荐的

作者:星星的美摔空间

最近总结了各大排序算法的原理 ,并对其进行了实现,想着一并把查找算法总结了,今天就着手開始总结查找算法。

废话不多说。这篇文章从最简单的查找算法開始讲起。之后会补充复杂的二叉搜索树查找(BST)和B树,B+树查找以及哈希查找等。

顾名思义,查找就是寻找到keyword在队列中的位置,最笨的查找算法就是依次顺序比較,复杂度为O(n)。可是有非常多方法的复杂度能够达到O(logn)等等。

keyword与数组中的数顺序比較,时间复杂度O(n).

二分查找的条件是原数组有序。在查找时,将keyword与数组中间的数比較。若等于则找到。若大于则在其右边寻找,若小于则在其左边寻找,然后递归的进行二分查找。

时间复杂度O(logn)。

若有较频繁的插入操作,对于维护二分查找须要的有序结构,须要付出一定的时间代价。

分块查找是顺序查找的一种改进方法。

首先须要对数组进行分块,分块查找须要建立一个“索引表”。索引表分为m块,每块含有N/m个元素,块内是无序的,块间是有序的,比如块2中最大元素小于块3中最小元素。

先用二分查找索引表。确定须要查找的keyword在哪一块,然后再在对应的块内用顺序查找。

分块查找又称为索引顺序查找。

时间复杂度:O(log(m)+N/m)

完整代码下载点击:

http://download.csdn.net/detail/u010025211/8841123

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5305160.html,如需转载请自行联系原作者