0
点赞
收藏
分享

微信扫一扫

一个函数,实现一个整形有序数组的二分查找

binary_search(int arr[],int k,int sz)

{

   //算法的实现

   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

    {

       return mid;

    }

 }

    if(left>right)

      return -1;

}

int main()

{

   int arr[]={1,2,3,4,5,6,7,8,9,10};

   int k = 7;

   int sz = sizeof(arr)/sizeof(arr[0]);

   int ret = binary_search(arr,k,sz);

   if(ret == -1)

   {

       printf("找不到");

   }

   else

   {

       printf("找到了,下标是:%d\n",ret);

   }


   return 0;

}

举报

相关推荐

0 条评论