下面二分检索算法的C++代码哪错了呢?

[复制链接]
查看11 | 回复3 | 2010-11-2 11:18:00 | 显示全部楼层 |阅读模式
得不到正确的结果:
#include
using namespace std;
void BINSRCH(int A[],int n,int x,int j)
{
int low,high,mid;
low=0;
high=n-1;
while(low>x;
BINSRCH(A,n,x,j);
if(j=-1)
cout<<x<<"不在A中"<<'\n';
else
cout<<x<<"在A["<<j<<"]中"<<endl;
return 0;
}

回复

使用道具 举报

千问 | 2010-11-2 11:18:00 | 显示全部楼层
#includeusing namespace std;int BINSRCH(int A[],int n,int x,int j){ int low,high,mid; low=0; high=n-1; while(low<=high) {mid=(low+high)/2;if(x==A[mid]){ j=mid; break;}else if(x<A[mid]) high=mid-1;else low=mid+1; } cout<<j<<endl; return j;}int main()
回复

使用道具 举报

千问 | 2010-11-2 11:18:00 | 显示全部楼层
有两处错误:第一处,BINSRCH的第四个参数j应为引用类型。因为你需要知道j的值被改变了。应改为:void BINSRCH(int A[],int n,int x,int& j)这样传递参数j的时候,传的就是地址,而不是值。只要j的值在BINSRCH中被改变,退出BINSRCH后,j的值也会跟着改变。第二处,main中的if语句的条件表达式
回复

使用道具 举报

千问 | 2010-11-2 11:18:00 | 显示全部楼层
两个地方void BINSRCH(int A[],int n,int x,int j)改成void BINSRCH(int A[],int n,int x,int& j)if(j=-1)change to if(j==-1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行