中易网

用二分法查找一个已排好序的数组里面的某个值的位置?求!!!

答案:1  悬赏:0  
解决时间 2021-02-23 11:27
#include<iostream>
using namespace std;

int binary(int array[],int left,int right,int k)
{ if(left+1!=right)
{int i=(left+right)/2;cout<<left<<right<<endl;
if(k<=array[i]) {right=i;}
if(k>array[i]) {left=i;}
binary(array,left,right,k);
}
return right;
}

int main()
{cout<<"Pleased input an array storing 10 integers ordered by value(the left is least):"<<endl;
int a[10];
for(int i=0;i<10;i++)
cin>>a[i];
cout<<"What number do you want to search:"<<ends;
int se;
cin>>se;
cout<<se<<" is in the position of "<<binary(a,-1,10,se)<<endl;
return 0;
}

这个程序错在哪里啊???各位大虾救救。。
不好意思:补充一下,如果有相同的数存在,则输出第一个的位置。
最佳答案
我把你的程序改了改,你的问题在于递归函数要在最前边写出返回条件,而且二分法查找中,当left与right相等的时候,如果找不到要结束递归。

#include<iostream>
using namespace std;

int binary(int array[],int left,int right,int k)
{
int i= (left+right)/2;

// 数组中不存在这样的数
if ((left == right) && k != array[left])
{
printf ("not find\n");
exit (0);
}

// 找到相应的数
if (k == array[i])
return i; // C++ 中数组索引从0开始,不要搞混了
else
if (k < array[i]) // 查找左半边
{
right = i - 1;
binary(array, left, right, k);
}
else // 查找右半边
{
left = i + 1;
binary(array, left, right, k);
}
}

int main()
{
cout<<"Pleased input an array storing 10 integers ordered by value(the left is least):"<<endl;
int a[10];
for(int i=0;i<10;i++)
cin>>a[i];
cout<<"What number do you want to search:"<<ends;
int se;
cin>>se;

cout<<se<<" is in the position of "<<binary(a, 0, 10, se)<<endl; // 这里要改改
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电话号码怎么显示自己商铺名字
为啥总是听到楼上有咚咚的声音,而楼上根本没
如果你认识他的时候他自己开着一个餐厅你以为
中国移动卿富手机专卖店这个地址在什么地方,
中山大学南校区-玉书之家地址在什么地方,想
中华传统美德的作文八百字作文怎么写
想做代理记账和报税都需要什么资质?怎么办理
罗纯山北路怎么去啊,有知道地址的么
扫描的图片转化为文本的软件
什么是面向切面编程AOP
窟窿山地址在哪,我要去那里办事
【C语言】求问这样的code怎么写
这个女生的头发是什么颜色的,,左边的那个
周村明星书店在什么地方啊,我要过去处理事情
大家好,我结婚两次,都离婚了,这次在家里相
推荐资讯
佛山市顺德区晋伟五金电器有限公司(水壶厂)地
我叫MT2能在安卓模拟器玩吗 模拟器进不去页面
我是菜鸟,网站源码和网站程序是不是一回事?请
新飞飞祭祀弓手哪个比较好-。-?
车叮叮佛冈旗舰店地址有知道的么?有点事想过
老北京冰糖葫芦景东专卖怎么去啊,有知道地址
1.80合击适合什么职业
想在江西鄱阳开什么加盟店好呢
碧()如洗 成语
如何查询oracle dmp 文件的字符集
明飞照相馆怎么去啊,有知道地址的么
神马是苏打温泉?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?