C语言如何用二分法查找一个数.我要一个例题
发布网友
发布时间:2022-04-26 19:38
我来回答
共4个回答
热心网友
时间:2023-11-10 14:06
//二分法查找一个数,原数列必须是有序的,
//有个问题,当数列中有相同的数怎么处理,也就是只找到其中一个
void binsrch( int m[N],int k){
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("找到此数在数组的%d位,值为%d",mid+1,k);
return;
}
}
printf("没有找到此数,非常报歉");
return;
}
热心网友
时间:2023-11-10 14:06
二分法查找一个数,原数列必须是有序的,
注意,当数列中有相同的数怎么处理,也就是只找到其中一个
void binsrch( int m[N],int k){
int low,high,mid;
low=0;high=N-1;
while (low<=high){
mid=(low+high)/2; //2分法的运用
if (k>m[mid])
high=mid-1;
if (k<m[mid])
low=mid+1;
if (k==m[mid]){
printf("找到此数在数组的%d位,值为%d",mid+1,k);
return 0;
}
}
printf("没有找到此数,非常报歉");
return 0;
}
热心网友
时间:2023-11-10 14:07
二楼的好像正确,一楼的不对
热心网友
时间:2023-11-10 14:07
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;
}
我记得书上好像有这个例子吧。