0
点赞
收藏
分享

微信扫一扫

二分查找法与函数

yellowone 2022-10-25 阅读 187

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

                 //这里的arr本质上是一个指针

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

{

 

 

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

  {

   left = mid + 1;


  }

  else if (arr[mid] > k)

  {

   right = mid - 1;

  }

  else

  {

   return mid;

  }

 }

return -1;

}

int main()

{

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

int k = 1;

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

int ret = binary_search(arr, k, sz);//这的arr只是传了首元素的地址

 

if (-1==ret)

{

 printf("找不到指定数字\n");

}

else

{

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

}

return 0;

}

举报

相关推荐

0 条评论