| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:新新人求帮助,关于"函数调用"问题!!
只看楼主 加入收藏
_HuBin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-7-21
收藏
 问题点数:0 回复次数:6 
新新人求帮助,关于"函数调用"问题!!
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;
}




高手一看就知道上面是一个"函数",
功能是二分法查找数组中的某一个值,

我想请教一下如何去调用这个函数,

说白了就是怎么向他传递参数,

希望高手给我例子,
非常感谢啦!!
搜索更多相关主题的帖子: 函数 
2008-07-21 23:25
coming
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2008-4-20
收藏
得分:0 
int binarysearch(int a[],int x,int n)
int a[] 是一个数组 你传递一个整形的数组就可以
x是要查找的数
n是这个数组的元素个数
如:
int s[15];要查找3
可以这样的
binarysearch(s,3,15)
2008-07-21 23:39
ams87
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-7-21
收藏
得分:0 
饿...看不懂.....哪个高手能告诉我上面的函数是做什么的?每行代码分别是什么意思???
2008-07-21 23:57
carmen0531
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-7-22
收藏
得分:0 
这就是传说中的对半查找的函数模块。
如果找到就返回查找值的坐标,否则返回-1。

调用:
   int b=binarysearch(int a[],int x,int n);
if(b!=-1)
   cout>>“找到了”;
   x=a[b];
else
    printf("不好意思,没找到。");



差不多就是这样用吧,试试好了,不行再稍微改改就好了。怎么说也只是我凭空想的正确率也不一定高到哪里去。凑合着用吧。
2008-07-22 02:21
_HuBin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-7-21
收藏
得分:0 
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....
2008-07-23 22:39
鬼画符
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-7-24
收藏
得分:0 
回复 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;

}
2008-07-24 00:51
_HuBin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-7-21
收藏
得分:0 
谢谢谢谢楼上的,受了你的启发,我知道错误的地方了,

我那程序在逻辑上还有错误,

完全正确的见下:


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]]
2008-07-25 22:57
快速回复:新新人求帮助,关于"函数调用"问题!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012099 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved