二分法函数查找
程序员文章站
2024-03-16 09:10:22
...
#include<stdio.h>
int search(int a[] ,int key,int length) //函数定义
{
int ret=-1; //令ret=-1
int left=0;
int right=length-1;//length-1把right放到数组最右边
while(right>left){ //正常情况下right的下标大于left;
int mid=(left+right)/2; //最右的下标加最左除2得到mid位置
if( key==a[mid] ){ //当输入的k等于了mid代表找到了
ret=mid; //然后把mid的值赋给ret
break; //跳出循环
}
else if(a[mid]>key) //输入的k小于mid
{
right=mid-1; //把right调到mid左边的下标
}else
left=mid+1; //大于mid就让left调到mid右边的下标
}
return ret;//返回ret的值给调用函数处,找到输出 没找出输出-1
}
int main( )
{
int k;
scanf("%d",&k); //输入k;
int a[]={10,20,30,40,50,60,70,80,90,100};
int z=search (a ,k,sizeof(a)/sizeof(a[0] ));//调用函数将z的值求出
printf("%d\n",z);
return 0;
}
上一篇: 367. 有效的完全平方数
下一篇: 序列化工具类