C语言 写一个数字 在数组中查找到,下面以7为例子

时间:2022-12-20 18:54:55

//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;

 }