#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变量中。根据结果判断目标元素是否存在于数组中,并输出相应的提示信息。

二分查找算法在搜索大量有序数据时非常高效,因为它每次都将搜索范围缩小一半,而不需要遍历整个数据集。在实际的软件开发中,这种算法经常被用于快速查找和搜索功能的实现。