二分查找
2014-12-07 11:28
162 查看
二分查找算法,又称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。
搜素过程从数组的中间元素开始,
1)如果中间元素正好是要查找的元素,则搜素过程结束;
2)如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找;
3)数组为空,退出
代码如下:
折半查找时间
T(n) = T(n/2) + c ==>> T(n) = O(lbn)
搜素过程从数组的中间元素开始,
1)如果中间元素正好是要查找的元素,则搜素过程结束;
2)如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找;
3)数组为空,退出
代码如下:
int binary_search(int A[], int n, int target) { int low = 0, high = n - 1, mid = -1; while (low <= high) { mid = (low + high) / 2; if (A[mid] == target) { break; } else if (A[mid] < target) { low = mid + 1; } else { high = mid - 1; } } return (low <= high) ? mid : -1; }
折半查找时间
T(n) = T(n/2) + c ==>> T(n) = O(lbn)
相关文章推荐
- 二分查找
- 递推递归练习 P - M--二分查找
- POJ3273 Monthly Expense (二分统计)+二分查找基础例子
- 递归之二分查找
- 归并排序 二分查找
- 转:二分查找的3种不同情况详细介绍
- 二分查找真的有你想象中那么简单吗?
- hdu2199 Can you solve this equation?(二分查找,多项式求解)
- 二分查找树按照key值划分
- 关于C++二分查找
- hihocoder1133 : 二分·二分查找之k小数
- js顺序查找与二分查找
- 二分查找详解
- 【算法拾遗】二分查找递归非递归实现
- Light oj 1138 - Trailing Zeroes (III) 【二分查找好题】【 给出N!末尾有连续的Q个0,让你求最小的N】
- 二分查找 c++实现
- 二分查找
- 【hoj】2651 pie 二分查找
- 不用递归的二分查找
- 二分查找