C语言中的二分查找及其实例分析

下面是用 C 编程语言实现的二进制搜索算法的示例:

 

'''c

 

#include

 

int binarySearch(int arr[], int low, int high, int target) {

    while (low <= high) {

        int mid = low + (high - low) / 2;

 

        if (arr[mid] == target) {

            return mid; // Found the target at index mid

        } else if (arr[mid] < target) {

            low = mid + 1; // Target is in the right half

        } else {

            high = mid - 1; // Target is in the left half

        }

    }

 

    return -1; // Target not found

}

 

int main() {

    int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};

    int n = sizeof(arr) / sizeof(arr[0]);

    int target = 23;

 

    int result = binarySearch(arr, 0, n - 1, target);

 

    if (result == -1) {

        printf("Target not found in the array.\n");

    } else {

        printf("Target found at index %d.\n", result);

    }

 

    return 0;

}

 

'''

 

在此示例中,“binarySearch”函数采用数组“arr”、下限“low”、上限“high”和要搜索的目标值。它对排序后的数组执行二进制搜索以查找目标值。该函数使用 while 循环将搜索空间重复分成两半,直到找到目标或搜索空间用尽。

 

该算法假定输入数组按升序排序。它首先计算搜索空间的中间索引(“mid”)。如果中间元素等于目标,则该函数返回索引。如果中间元素小于目标,则搜索空间将缩小到右半部分。如果中间元素大于目标,则搜索空间将缩小到左半部分。此过程一直持续到找到目标或搜索空间为空。

 

在“main”函数中,使用示例数组“{2, 5, 8, 12, 16, 23, 38, 56, 72, 91}”进行演示。目标值设置为 23。调用“binarySearch”函数,并检查结果。如果结果为 -1,则表示在数组中找不到目标值。否则,将打印找到目标值的索引。

 

在这种特定情况下,输出将是:

 

'''

 Target found at index 5.

'''

 

这演示了 C 语言中二叉搜索算法的基本实现和用法。

 

你可能感兴趣的:(C语言专栏,算法,c语言,开发语言,数据结构)