【发布时间】:2020-10-19 18:42:52
【问题描述】:
这是我的代码。代码正在运行,但没有得到正确的结果。 例如,在程序中搜索 3 即使存在,也会得到“未找到”的输出。
#include<stdlib.h>
#include<iostream>
using namespace std;
int Bsearch(int arr[],int item,int n)
{
int low,mid,up;
low=0;up=n-1;
while(low<=up && item!=arr[mid])
{
mid=(low+up)/2;
if(item==arr[mid])
return mid;
else if(item<arr[mid])
low=mid+1;
else
up=mid-1;
}
return -1;
}
int main()
{
int index,item;;
int arr[]={1,2,3,4,5,6,7,8,9};
cout<<"enter search item\n";
cin>>item;
index=Bsearch(arr,item,9);
if(index!=-1)
cout<<"element found at position"<<(index+1);
else
cout<<"element not found";
return 0;
}
【问题讨论】:
-
您是否尝试过使用调试器或进行一些打印以查看发生了什么?本网站并非真正旨在帮助您查找您的错误。
-
您还在使用
mid之前为其分配了一个值,从而导致未定义的行为。 (另外,while 测试的&& item!=arr[mid]部分是不必要的。) -
@1201ProgramAlarm 没错!