二分查找
来源:互联网 发布:工业设计网站 知乎 编辑:程序博客网 时间:2024/06/11 23:41
//数组事先有序
#include<stdio.h>
int bsearch(int *num, int x, int y, int choose); //x是下界 y是上界 choose是要查找的值
int asearch(int *num, int x, int y, int choose);
int main ()
{
int num[10]={1,2,3,4,5,6,7,8,9,10};
int choose=3;
printf("用迭代的方法求位置是:%d", bsearch(num, 0, 9, choose));
printf("\n用递归的方法求位置是:%d", asearch(num, 0, 9, choose));
}
int bsearch(int *num, int x, int y, int choose)
{
int m;
while(x<y)
{
m=x+(y-x)/2;
if(num[m]==choose)
return m+1;
else if(num[m]>choose)
y=m-1; //答案的上界是y
else
x=m+1; //答案的下界是m+1 m肯定小于所找的数值
}
return -1;
}
int asearch(int *num, int x, int y, int choose)
{
int m;
if(x<y) //x<=y结果相同 y-x=1时 m=x+1/2=m+0
{
m=x+(y-x)/2;
if(num[m]==choose)
return m+1;
else if(num[m]>choose)
return asearch(num, x, m-1, choose);
else
return asearch(num, m+1, y, choose);
}
else
return -1;
}
#include<stdio.h>
int bsearch(int *num, int x, int y, int choose); //x是下界 y是上界 choose是要查找的值
int asearch(int *num, int x, int y, int choose);
int main ()
{
int num[10]={1,2,3,4,5,6,7,8,9,10};
int choose=3;
printf("用迭代的方法求位置是:%d", bsearch(num, 0, 9, choose));
printf("\n用递归的方法求位置是:%d", asearch(num, 0, 9, choose));
}
int bsearch(int *num, int x, int y, int choose)
{
int m;
while(x<y)
{
m=x+(y-x)/2;
if(num[m]==choose)
return m+1;
else if(num[m]>choose)
y=m-1; //答案的上界是y
else
x=m+1; //答案的下界是m+1 m肯定小于所找的数值
}
return -1;
}
int asearch(int *num, int x, int y, int choose)
{
int m;
if(x<y) //x<=y结果相同 y-x=1时 m=x+1/2=m+0
{
m=x+(y-x)/2;
if(num[m]==choose)
return m+1;
else if(num[m]>choose)
return asearch(num, x, m-1, choose);
else
return asearch(num, m+1, y, choose);
}
else
return -1;
}
阅读全文
1 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 【日常学习笔记】PHP上传文件时权限问题~
- Python自学第一课
- oracle 一次删除多张表
- HDPCD-Java-复习笔记(20)
- MarkDown 常用语法延展
- 二分查找
- java基础知识
- python 中赋值 copy() 与 ' = ' 号以及比较符'=='号 与 'is'
- 10.19(周四)
- Linux教程【7】-权限管理命令
- 解题笔记——Noip2012铺地毯
- 用python进行图片处理和特征提取
- angular学习总结七——http代理解决本地开发时跨域问题
- Java finally语句到底是在return之前还是之后执行?