二分搜索算法
2012-09-21 18:58
288 查看
二分搜索算法是运用分治策略的典型例子。
二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x做比较。如果x = a[n/2],
则找到x, 算法终止; 如果 x < a[n / 2], 则只要在数组a的左半边继续搜索x; 如果x > a[n / 2], 则只要
在数组的右半边继续搜索x。
具体算法描叙如下:
容易看出,每执行一次算法的while循环,待搜索的数组大小缩小一半。因此,在最坏的情况下,
while循环被执行了O(logn)次。循环体内运算时间O(1)时间,因此整个算法在最坏的情况下的计算
时间复杂性为O(logn)。
注:以上内容整理自《计算机算法设计与分析》(第三版)。
二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x做比较。如果x = a[n/2],
则找到x, 算法终止; 如果 x < a[n / 2], 则只要在数组a的左半边继续搜索x; 如果x > a[n / 2], 则只要
在数组的右半边继续搜索x。
具体算法描叙如下:
template <class Type> int BinarySearch(Type a[], const Type &x, int n) { //在a[0] <= a[1] <= ... <= a[n -1]中搜索x //找到x时返回其在数组中的位置,否则返回 -1 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 }
容易看出,每执行一次算法的while循环,待搜索的数组大小缩小一半。因此,在最坏的情况下,
while循环被执行了O(logn)次。循环体内运算时间O(1)时间,因此整个算法在最坏的情况下的计算
时间复杂性为O(logn)。
注:以上内容整理自《计算机算法设计与分析》(第三版)。
相关文章推荐
- 二分搜索算法
- 搜索算法--线性搜索、二分搜索、内插搜索、剪枝搜索
- 二分搜索算法
- 算法05:二分搜索算法——分治法Part1
- 三次比较的二分搜索算法
- 二分搜索算法(JAVA Code)
- 二分搜索算法
- 搜索算法-顺序查找和二分查找
- 搜索算法-二分搜索-方程解问题(problem 1001)
- 二分搜索算法
- 递归与分治策略之二分搜索算法
- c语言实现二分搜索算法
- [整理]二分查找搜索算法原理及递归,迭代方法实现
- 二分搜索算法
- 搜索算法-二分搜索(折半查找)
- 二分搜索算法(折半查找)原理以及递归(recuition),迭代(iteration)的两种实现源代码
- 搜索算法-二分搜索-方程解问题(problem 1002)
- 实验1:二分搜索算法
- 快速排序算法和二分搜索算法
- 二分查找的三个版本,据说90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。