lucene涉及到的算法----二元搜索算法
2011-04-07 14:40
176 查看
转贴。。
二元搜索算法是在排好序的数组中找到特定的元素.
首先, 比较数组中间的元素,如果相同,则返回此元素的指针,表示找到了. 如果不相同, 此函数就会继续搜索其中大小相符的一半,然后继续下去. 如果剩下的数组长度为0, 则表示找不到,那么函数就会结束.
此算法函数如下:
对于有n个元素的数组来说,二元搜索算法进行最多1+log2(n)次比较. 如果有一百万元素,最比较20次, 也就是最多20次递归执行binarySearch()函数.
原帖http://hi.baidu.com/cpu3800/blog/item/6f22e8f915ba4851252df2a2.html
二元搜索算法是在排好序的数组中找到特定的元素.
首先, 比较数组中间的元素,如果相同,则返回此元素的指针,表示找到了. 如果不相同, 此函数就会继续搜索其中大小相符的一半,然后继续下去. 如果剩下的数组长度为0, 则表示找不到,那么函数就会结束.
此算法函数如下:
int *binarySearch(int val, int array[], int n) { int m = n/2; if(n <= 0) return NULL; if(val == array[m]) return array + m; if(val < array[m]) return binarySearch(val, array, m); else return binarySearch(val, array+m+1, n-m-1); }
对于有n个元素的数组来说,二元搜索算法进行最多1+log2(n)次比较. 如果有一百万元素,最比较20次, 也就是最多20次递归执行binarySearch()函数.
原帖http://hi.baidu.com/cpu3800/blog/item/6f22e8f915ba4851252df2a2.html
相关文章推荐
- 搜索引擎(lucene及周边) 涉及的一些算法总结
- 从零开始学算法(三)搜索算法(一)(深度优先搜索)之地图迷宫
- MapXtreme DJ最短路径算法 全路径搜索算法
- 搜索引擎之全文搜索算法功能实现(基于Lucene)
- 数据探索和预处理可能涉及到的算法
- 微软等数据结构+算法面试100题(45)-- 在二元树中找出和为某一值的所有路径
- 经典算法研究系列:一、A*搜索算法
- 关于算法面试中涉及Binary Tree的问题
- 笔试面试算法经典--打印数组中相加和为给定值的二元组及三元组(Java)
- 平衡二叉树所涉及的一些算法
- ERP 开发过程中涉及到的算法 库存,工程,生产计划,固定资产计算方法
- [kotlin·算法]二元选择排序对有序数列排序失败的研究
- MapXtreme DJ最短路径算法 全路径搜索算法
- 搜索引擎之全文搜索算法功能实现(基于Lucene)
- 浅析java 循序与二元搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- Project2--Lucene的Ranking算法修改:BM25算法
- 二元语法(2-gram)分词中的平滑算法
- Lucene 算法原理
- Https传输中加密和密钥交换涉及到的算法总结与介绍