首页 > 搜索 > 简单有序查找算法,查找算法系列之简单查找:顺序查找、二分查找、分块查找

简单有序查找算法,查找算法系列之简单查找:顺序查找、二分查找、分块查找

互联网 2020-10-26 07:02:44
在线算命,八字测算命理

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

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

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

1.顺序查找

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

templateint OrderSearch(T *x, int N, T keyWord){for(int i = 0; i < N; i++){if(x[i] == keyWord)return i;}return -1;}2.二分查找

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

时间复杂度O(logn)。

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

templateint binarySearch(T *x, int low, int high, T keyword)//递归{if(low > high)return -1;int mid = (low + high)/2;if(x[mid] == keyword) return mid;if(x[mid] < keyword)return binarySearch(x, mid+1, high);if(x[mid] > keyword)return binarySearch(x, low, mid-1);}templateint binarySearch(T *x, int N, T keyword)//无递归{int low = 0, high = N-1,mid;while(low
免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

相关阅读

一周热门

查看更多