大家试试我这个代码 功能是查找输入数字,但是只能找8-10的数字 0-7都会卡住
程序代码:
//二分查找Bnary_Search:在一个数组中查找具体某个数,如果找到就返回该数,找不到就返回-1 #include<stdio.h> int Search_Num(int arr[],int Find_Num,int Size); //在一个数组中查找具体某个数, //如果找到就返回该数,找不到就返回-1 int main() { int arr[]={0,1,2,3,4,5,6,7,8,9,10}; //0-10 查找的数字库 int Find_Num = 0;//你要找的数字 int ret = 0; //返回值 int Size = sizeof(arr)/sizeof(arr[0]);// 该数组大小/数组中一个数字的大小=该数组中数字的个数 printf("从0-10中输入一个要寻找的数字:\n"); scanf("%d",&Find_Num); ret = Search_Num(arr,Find_Num,Size);//二分法查找函数 //此处arr为首元素的地址 if(ret == -1) { printf("找不到指定数字\n"); } else { printf("找到了,下标是:%d\n",ret); } return 0; } //arr本质上是一个指针 int Search_Num(int arr[],int Find_Num,int Size)//输入一个数组,一个需要查找的数字 一个数组中数字个数 { int left = 0;//定义左下标 int right = Size-1;//定义右下标 while(left<=right)//只要左下标还小于等于右下标就表示还有数字可以寻找 { int mid =(left+right)/2; //中间元素下标 if(arr[mid]<Find_Num) //该数组中中间一个数比要找的数小 { left=mid+1; //左边元素下标变为中间元素下标+1 } else if(arr[mid]>Find_Num) //如果该数组中间元素下标比要找的数大 { left=mid-1; //左边元素下标变为中间元素下标-1 } else { return mid; //反馈该数 } } return -1; //找不到反馈-1 }