用二分法找有序数组中的数
为什么运行之后输入要找的数程序就结束了
望大佬解答
第28行,scanf("%d",&n); n 的前面少了 ‘&’ 符号。void binary_search(int arr[],int n,int sz) 函数里 while(){}的 花括号括错地方了,修改如下,供参考:
#include <stdio.h>
#include<string.h>
void binary_search(int arr[],int n,int sz)
{
int mid,left,right;
left = 0;
right = sz-1;
while(left<=right){
mid = (left+right)/2;
if(n<arr[mid]){
right = mid-1;
}
else if(n>arr[mid]){
left = mid+1;
}
else{
printf("你所要查找的数在数组中的下标为:%d\n",mid);
break;
}
}
if(left>right){
printf("没有找到\n");
}
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int n,sz;
sz = sizeof(arr)/sizeof(arr[0]); //求数组长度
printf("请输入要查找的数\n");
scanf("%d",&n);
binary_search(arr,n,sz);
return 0;
}
#include <stdio.h>
#include<string.h>
void binary_search(int arr[],int n,int sz)
{
int mid,left,right;
left = 0;
right = sz-1;
while(left<=right){
mid = (left+right)/2;
if(n<arr[mid]){
right = mid-1;
}
else if(n>arr[mid]){
left = mid+1;
}
else{
printf("你所要查找的数在数组中的下标为:%d",mid);
break;
}
if(left>right){
printf("没有找到\n");
}
}
}
void main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int n,sz;
sz = sizeof(arr)/sizeof(arr[0]); //求数组长度
printf("请输入要查找的数\n");
scanf("%d",&n);
binary_search(arr,n,sz);
}