下面是用 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 语言中二叉搜索算法的基本实现和用法。