#include <stdio.h> int binarySearch(int arr[], int l, int r, int target) { if (r >= l) { int mid = l + (r - l) / 2; // 如果目标元素在中间 if (arr[mid] == target) return mid; // 如果目标元素比中间元素小 if (arr[mid] > target) return binarySearch(arr, l, mid - 1, target); // 如果目标元素比中间元素大 return binarySearch(arr, mid + 1, r, target); } // 如果目标元素不存在 return -1; } int main() { int arr[] = {2, 5, 7, 9, 12, 15, 18}; int target = 9; int n = sizeof(arr) / sizeof(arr[0]); int result = binarySearch(arr, 0, n - 1, target); (result == -1) ? printf("目标元素不存在") : printf("目标元素在索引 %d 处", result); return 0; }
上述代码演示了如何在C语言中实现简单的二分查找算法。通过将目标元素与数组的中间元素进行比较,可以确定目标元素在左半部分还是右半部分。然后,将搜索范围缩小到其中一半,直到找到目标元素或确定其不存在。
在主函数中,我们定义了一个有序整数数组arr和目标元素target。通过调用binarySearch函数来执行二分查找算法,将返回的结果存储在result变量中。根据结果判断目标元素是否存在于数组中,并输出相应的提示信息。
二分查找算法在搜索大量有序数据时非常高效,因为它每次都将搜索范围缩小一半,而不需要遍历整个数据集。在实际的软件开发中,这种算法经常被用于快速查找和搜索功能的实现。