二分查找
在一个有序数组中查找某个具体的数字n
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(arr[i]==k)
{
printf("找到啦,下标是%d\n",i);
break;
}
}
if(i==sz)
{
printf("Not Find\n");
}
return 0;
}
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]);
int left =0;
int right =sz-1;
while(left<=right)
{
//int mid= (left+right)/2;//注意,left+right若大于int的值范围,可能会造成部分值的丢失
int mid = left+(right-left)/2
if (arr[mid]<k);
{
left=mid+1;
}
else if(arr[mid]>k)
{
right=mid-1;
}
else
{
printf("找到啦,下表是%d\n",mid);
break;
}
}
if(left>right)
{
printf("找不到了\n");
}
return 0;
}
查看23道真题和解析