新新人求帮助,关于"函数调用"问题!!
int binarysearch(int a[],int x,int n){
int left,right,middle;
left=0;
right=n-1;
while(left<=right)
{
middle=(left+right)/2;
if(x==a[middle])
return middle;
if(x>a[middle])
left=middle+1;
else right=middle-1;
}
return -1;
}
高手一看就知道上面是一个"函数",
功能是二分法查找数组中的某一个值,
我想请教一下如何去调用这个函数,
说白了就是怎么向他传递参数,
希望高手给我例子,
非常感谢啦!!
int a[] 是一个数组 你传递一个整形的数组就可以
x是要查找的数
n是这个数组的元素个数
如:
int s[15];要查找3
可以这样的
binarysearch(s,3,15) 饿...看不懂.....哪个高手能告诉我上面的函数是做什么的?每行代码分别是什么意思??? 这就是传说中的对半查找的函数模块。
如果找到就返回查找值的坐标,否则返回-1。
调用:
int b=binarysearch(int a[],int x,int n);
if(b!=-1)
cout>>“找到了”;
x=a[b];
else
printf("不好意思,没找到。");
差不多就是这样用吧,试试好了,不行再稍微改改就好了。怎么说也只是我凭空想的正确率也不一定高到哪里去。凑合着用吧。 main(){
int m [5]={1,2,3,4,5};
binsrch (m,3,5);
}
void binsrch(int [] ,int k,int N)
{
int low,high,mid;
low=0;high=N-1;
while (low<=high){
mid=(low+high)/2;
if (k>m[mid])
high=mid-1;
if (k<m[mid])
low=mid+1;
if (k==m[mid]){
printf("index is %d ",mid+1,k);
return;
}
}
printf("error");
return;
}
//
先谢谢楼上的答案,但是我还是没有弄明白,
可能是我还没有开巧吧.
如上的程序,我还是不可以调用,老是通不过编译啊.郁闷ing....
回复 5# _HuBin 的帖子
帮你改过后可以运行的代码:main()
{
int m[5]={1,2,3,4,5};
binsrch(m,3,5);
getch();
}
binsrch(int m[],int k,int N) /*主要错误应该就在这,首先没有void ,再就是你掉了个m */
{
int low,high,mid;
low=0;high=N-1;
while (low<=high)
{
mid=(low+high)/2;
if (k>m[mid])
high=mid-1;
if (k<m[mid])
low=mid+1;
if (k==m[mid]){
printf("index is %d ",mid+1,k);
return;
}
}
printf("error");
return;
} [size=6]谢谢谢谢楼上的,受了你的启发,我知道错误的地方了,
我那程序在逻辑上还有错误,
完全正确的见下:[/size]
main()
{
int ary[10]={1,2,3,4,5,6,7,8,9,10};
binsrch(ary,9,10);
getch();
}
binsrch(int array[],int k,int n)
{
int low,high,mid;
low=0;high=n-1;
while (low<=high)
{
mid=(low+high)/2;
if (k>array[mid])
low=mid+1;
if (k<array[mid])
high=mid-1;
if (k==array[mid]){
printf("index is %d ",mid);
return;
}
}
printf("error");
return;
}
[[it] 本帖最后由 _HuBin 于 2008-7-25 22:59 编辑 [/it]]
页:
[1]
