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

时间:2024-10-23 15:57:10

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

#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[0]);
    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[mid] == elem) {
            return mid;
        }
        else if (arr[mid] > elem) {
            high = mid - 1;
        }
        else {
            low = mid + 1;
        }
    
    }

    return -1;  //未找到
}