算法系列:二分搜索算法
2012-06-30 19:59
225 查看
二分搜索算法是运用分治策略的典型例子,适用于从已经排序好的n个元素中找出某一特定元素x,注意前提是该数组是已经排序了的。
二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较,如果x=a[n/2],则找到x,算法介绍;如果x<a[n/2],则只需要在数组a的左半部分继续搜索;如果x>a[n/2],则只要在数组a的有半部分继续搜索。在最坏的情况下,二分搜索算法需要用O(logn)的时间(这个不是很懂,望某些人可以解答一下)。
具体算法描述:(C++版)
本算法比较容易理解,我就不多说了。。。
二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较,如果x=a[n/2],则找到x,算法介绍;如果x<a[n/2],则只需要在数组a的左半部分继续搜索;如果x>a[n/2],则只要在数组a的有半部分继续搜索。在最坏的情况下,二分搜索算法需要用O(logn)的时间(这个不是很懂,望某些人可以解答一下)。
具体算法描述:(C++版)
template< class Type > int BinarySerarch(Type a[], const Type& x, int n) { int left = 0; int right = n - 1; while (left <= right) { int middle = (left + right)/2; if(x == a[middle]) return middle; if(x > a[middle]) left = middle + 1; else right = middle - 1; } return -1; //未找到x }
本算法比较容易理解,我就不多说了。。。
相关文章推荐
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 算法细节系列(5):二分查找应用
- 人工智能你必须掌握的32个算法(一)二分搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法(转csdn)
- 二分查找——算法系列
- 【常用算法思路分析系列】与二分搜索相关高频题
- 经典算法研究系列:一、A*搜索算法
- 算法:改写二分搜索算法
- 【从零学习经典算法系列】分治策略实例——二分查找
- [转贴]经典算法研究系列:一、A*搜索算法
- 算法细节系列(4):二分查找总结
- 经典算法研究系列:一、A*搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 算法分析与设计-03-二分搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 左神算法课堂系列--你不知道的二分(局部最小)
- 算法系列(二)查找算法--基本查找和二分查找