博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分搜索技术
阅读量:7029 次
发布时间:2019-06-28

本文共 836 字,大约阅读时间需要 2 分钟。

分治法的基本思想:将一个规模为n的问题,分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解这些子问题,然后将各个子问题的解合并得到原问题的解。

经典例子:二分搜索

算法基本思想:

1 将n个元素分成个数大致相同的两半,取n/2与x进行比较。

2 如果找到,则终止,返回。

3 如果小于n/2,则在小半部分继续查找。

4 如果大于n/2,则在大半部分继续查找。

算法描述代码:

#include 
using namespace std;template
int BinarySearch(Type a[],const Type &x,int n){ int left=0; int right = n-1; while(left<=right){ int middle = (left+right)/2; if(x == middle) return middle; if(x > a[middle]) left = middle+1; else right = middle-1; } return -1;}int main(){ int num[10] = {
0,9,8,7,6,5,4,3}; int a; cout<<"输入想要查找的数字:"<
>a; int find = BinarySearch(num,a,9); if(find!=-1) cout<
<

运行结果如下:

本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
Docker 安装
查看>>
多数据库数据导入
查看>>
[AVR]高压并行编程---基础知识
查看>>
inl文件介绍
查看>>
前端坑--表单篇
查看>>
P2P原理基础
查看>>
完成登录功能,用session记住用户名
查看>>
DBCP和C3P0使用--未完善
查看>>
JS常用方法(获取Class、获取元素样式、事件监听、cookie、ajax等)
查看>>
BZOJ 1084 最大子矩阵
查看>>
2018杭电多校第三场1007(凸包,极角排序)
查看>>
django中orm的简单操作
查看>>
Mybatis知识(1)
查看>>
[CentOS] 7 不执行文件 /etc/rc.d/rc.local
查看>>
模态窗口的各个属性
查看>>
10.28 (上午) 开课一个月零二十四天 (数据访问)
查看>>
为什么你应该(从现在开始就)写博客
查看>>
小技巧积累
查看>>
Java JDBC链接Oracle数据库
查看>>
Moss2010 部署命令
查看>>