二分查找

在一个有序数组中查找某个具体的数字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;   
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务