二分查找

title

二分查找也叫折半查找,是一种在有序数组中查找特定元素的算法。基本思想是将查找区间一分为二,然后确定目标值可能存在的区间,不断缩小区间直到找到目标值为止。

具体实现是先将数组排序,然后选取中间元素,如果中间元素等于目标值,直接返回;如果中间元素大于目标值,则在左半部分查找;如果中间元素小于目标值,则在右半部分查找。

以下是二分查找的C语言实现示例:


#include <stdio.h>

int binarySearch(int arr[], int left, int right, int key) {
    if (right >= left) {
        int mid = left + (right - left) / 2;

        if (arr[mid] == key) {
            return mid;
        }

        if (arr[mid] > key) {
            return binarySearch(arr, left, mid - 1, key);
        }

        return binarySearch(arr, mid + 1, right, key);
    }

    return -1;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int n = sizeof(arr) / sizeof(arr[0]);
    int key = 5;
    int result = binarySearch(arr, 0, n - 1, key);
    if (result == -1) {
        printf("Element is not present in array\n");
    } else {
        printf("Element is present at index %d\n", result);
    }
    return 0;
}

该示例代码实现了一个二分查找函数,接受一个已经排好序的整数数组、数组左右边界和要查找的元素。返回元素在数组中的索引,如果没有找到则返回-1。

主函数展示了如何调用二分查找函数,在一个包含10个元素的整数数组中查找数字5的位置。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""