#include <stdio.h>

int binarySearch(int arr[], int x, int low, int high) {
    while (low <= high) {
        int mid = (low + high) / 2;
        if (arr[mid] == x) {
            return mid;
        }
        else if (arr[mid] < x) {
            low = mid + 1;
        }
        else {
            high = mid - 1;
        }
    }
    return -1;
}

int main() {
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int x;
    scanf('%d', &x);
    
    int index = binarySearch(arr, x, 0, 9);
    
    if (index != -1) {
        printf('Index is %d
', index);
    } else {
        printf('Not Found
');
    }
    
    return 0;
}

代码说明:

  1. binarySearch 函数: 该函数实现二分查找算法,接收有序数组 arr、待查找数值 x、数组起始索引 low 和结束索引 high 作为参数。
  2. while 循环: 循环条件为 low <= high,表示待查找范围不为空。
  3. mid 计算: 计算当前查找范围的中点索引 mid
  4. 比较 arr[mid]x:
    • 如果 arr[mid] 等于 x,则找到了 x,返回 mid
    • 如果 arr[mid] 小于 x,则 xmid 右侧,更新 lowmid + 1
    • 如果 arr[mid] 大于 x,则 xmid 左侧,更新 highmid - 1
  5. 返回 -1: 如果循环结束仍未找到 x,则返回 -1,表示未找到。

main 函数:

  1. 初始化数组 arr
  2. 从用户输入待查找数值 x
  3. 调用 binarySearch 函数查找 x 在数组中的位置,并将结果存储在 index 中。
  4. 根据 index 的值判断是否找到 x,并输出相应的结果。

使用方法:

  1. 编译并运行代码。
  2. 输入一个整数 x,程序会查找 x 在数组中的位置。
  3. 如果找到 x,程序会输出 x 的索引。
  4. 如果没有找到 x,程序会输出 'Not Found'。
C语言二分查找算法实现:查找有序数组中的指定数值

原文地址: https://www.cveoy.top/t/topic/pfu1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录