递归与分治策略之二分搜索算法
来源:互联网 发布:铃声剪辑软件 编辑:程序博客网 时间:2024/05/16 15:28
二分搜索算法是运用分治策略的典型例子
二分搜索算法充分利用了元素之间的次序关系(二分搜索的算法是基于有序列)采用分治策略,可在最坏情况下用O(logn)时间完成搜索任务。
二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,去a[n/2]与x作比较。如果x = a[n/2],则找到x,算法终止;如果x < a[n/2],则只在数组a的左半部继续搜索;如果x > a[n/2],则只在数组a的右半部继续搜索。具体算法可描述如下:
template<class T>int BinarySearch(T a[], const T &x, int n){int lef = 0;int rig = n-1;while(lef <= rig){int mid = (lef + rig) >> 1;if(x == a[mid])return mid;if(x > a[mid])lef = mid + 1;elserig = mid - 1;}return -1;}
如果用递归的细想来实现,具体算法可描述如下:
template <class T>int BinarySearch(T a[], const T &x, int lef, int rig){if(lef <= rig){int mid = (lef + rig) >> 1;if(x == a[mid])return mid;else if(x > a[mid])return BinarySearch(a, x, mid+1, rig);elsereturn BinarySearch(a, x, lef, mid-1);}}
以上是二分搜索技术的两种实现方法。
- 递归与分治策略之二分搜索算法
- 递归与分治策略之二分搜索(Java版本)
- 【计算机算法分析】递归与分治策略——二分搜索与集合划分问题
- 分治与递归策略_二分搜索法
- 递归和分治策略之二分搜索法
- 递归分治算法之二分搜索(Java版本)
- 算法--递归与分治策略
- 算法设计与分析之递归与分治策略
- 分治策略之二分搜索技术
- 算法源码之递归与分治策略(1)
- 算法源码之递归与分治策略(2)
- 算法复习-递归与分治策略
- 算法复习2:递归与分治策略
- 算法思想之分治递归策略
- 【算法·递归与分治】二分查找
- 算法学习之旅,中级篇(8)-–分治之二分搜索(递归)
- 分治算法之二分搜索--Binary
- 递归与分治策略之快速排序
- MD5 算法描述
- ubuntu系统的自动更新方法
- js 命名空间
- 爹爹是去了天堂
- Jsp中的DOCTYPE问题——解决css中的margin居中无效问题
- 递归与分治策略之二分搜索算法
- 古今贤文
- htc xv6900上网设置
- Linux工程实践学习笔记——基于主机系统的多客户即时通讯/聊天室 Day(2)
- [转载]ubuntu上安装CUDA,版权 Young!所有
- 链接
- 编程练习3--括号匹配
- 实例一——为自己的操作系统中加入中断(中断机制的实现)
- 用数学的方法描述图像的可素描性(Towards a Mathematical Theory of Primal Sketch and Sketchability)