#include <stdio.h>
int fun(int*p,int n,int x){//定义一个函数 ;
int left = 0;//数组从0开始 ;
int right = n-1;//数组长度为元素长度-1 ;
int mid ;//定义一个中间值 ,二分法原理;
while (left<=right){//保证循环完 ;
mid = (right + left)/2;//循环一次,更新一次mid的值 ;
if(p[mid]==x){
break;//如果这个p【mid】为你要找的x,跳出循环,进行下一步;
}
else if(p[mid]>x){
right = mid - 1;//如果这个p【mid】>你要找的x,那就让数组长度缩小到中间-1;
}
else left = mid + 1;//同上理 ;
}
if (left<=right){
return mid;//如果在循环过程中找到了,return mid;
}
else return -1;//如果循环完还没找到,return -1;
}
int main(){
int a[10]={1,2,3,4,5,6,7,8,9,10};
int n,x;
printf("请输入x: ",x);
scanf("%d",&x) ;
int m;
m = fun(a,10,x);
if (m<0){
printf("Not found !");
}
else printf("你要查找的这个数的下标是%d",m);
return 0;
}
根据自己理解的注释,欢迎指正错误