以下是使用C语言实现二分法的示例代码:

#include <stdio.h>

// 在有序数组 arr 中查找元素 x 的位置
int binarySearch(int arr[], int n, int x)
{
    int left = 0, right = n - 1;
    while (left <= right) {
        int mid = (left + right) / 2;
        if (arr[mid] == x) {
            return mid;
        } else if (arr[mid] < x) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1;  // 如果未找到,返回 -1 表示失败
}

int main()
{
    int arr[] = { 2, 3, 6, 8, 10, 12, 15 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int x = 8;
    int index = binarySearch(arr, n, x);
    if (index == -1) {
        printf("未找到元素 %d\n", x);
    } else {
        printf("元素 %d 的位置是 %d\n", x, index);
    }
    return 0;
}

该程序首先定义了一个 binarySearch 函数,该函数接受一个有序数组、数组长度和要查找的元素,并返回元素在数组中的索引(如果找到)或 -1(如果未找到)。

该函数使用两个指针(leftright)来跟踪搜索范围。在每次循环中,它计算中间元素的索引,并将其与要查找的元素进行比较。如果中间元素等于要查找的元素,则返回中间元素的索引。否则,如果中间元素小于要查找的元素,则将左指针移动到中间元素的右侧;否则将右指针移动到中间元素的左侧。如果未找到元素,则返回 -1 表示失败。

main 函数中,我们定义了一个有序数组 arr 和要查找的元素 x。我们调用 binarySearch 函数,并将其结果存储在 index 变量中。如果 index 等于 -1,则打印未找到元素的消息;否则,打印元素的位置。

该程序的输出应为:

元素 8 的位置是 3
C语言实现二分查找算法

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

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