//int main()
//{
// int arr[] = {1,2,3,4,5,6,7,8,9,10};
// int k = 7;
// int i =0;
// int sz = sizeof(arr)/sizeof(arr[0]);
// for(i=0;i<sz;i++)
// {
// if(k==arr[i])
// {
// printf("找到了");
// break;
// }
// }
// if(i == sz)
// printf("没找到");
//
// return 0;
//}
//折半查找算法/二分查找算法
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 6;
int sz = sizeof(arr)/sizeof(arr[0]);//计算元素个数
int left = 0;//左下标
int right = sz-1;//右下标
while(left<=right)
{
int mid = (left+right)/2;//中间的下标
if(arr[mid]>k)
{
right = mid-1;
}
else if (arr[mid]<k)
{
left = mid + 1;
}
else
{
printf("找到了,下标是:%d\n",mid);
break;
}
}
if(left>right)
{
printf("找不到");
}
return 0;
}
标签:arr,right,int,mid,C语言,查找,数组,printf,left From: https://blog.51cto.com/u_15916254/5956418