渣渣兔 发表于 2024-10-20 03:24:02

逐日一题——第一百一十七题

标题:利用二分查找,查找一个数是否存在于一个升序数组中

#include <stdio.h>

int binarySearch(int arr[], int length, int elem);

int main()
{
    int arr[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int key;
    int length = sizeof(arr) / sizeof(arr);
    printf("请输入要查找的元素:\n");
    scanf_s("%d", &key);
    int mid = binarySearch(arr, length, key);
    if (mid != -1) {
      printf("找到了该数, 数组下标为:%d", mid);
    }
    else {
      printf("未找到该数");
    }

    return 0;
}

int binarySearch(int arr[], int length, int elem) {

    int low = 0, high = length - 1, mid;
    while (low <= high) {
      mid = (low + high) / 2;
      if (arr == elem) {
            return mid;
      }
      else if (arr > elem) {
            high = mid - 1;
      }
      else {
            low = mid + 1;
      }
   
    }

    return -1;//未找到
}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 逐日一题——第一百一十七题