阅读量:2
二分法查找算法是一种高效的查找算法,适用于已经排好序的数组。下面是C语言实现二分法查找算法的代码:
#include <stdio.h> // 二分法查找算法 int binarySearch(int arr[], int left, int right, int target) { while (left <= right) { int mid = left + (right - left) / 2; // 找到目标值 if (arr[mid] == target) { return mid; } // 目标值在右半边 if (arr[mid] < target) { left = mid + 1; } // 目标值在左半边 else { right = mid - 1; } } // 没有找到目标值 return -1; } int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int target = 6; int n = sizeof(arr) / sizeof(arr[0]); int result = binarySearch(arr, 0, n - 1, target); if (result == -1) { printf("目标值 %d 不存在数组中。\n", target); } else { printf("目标值 %d 在数组中的索引为 %d。\n", target, result); } return 0; }
在上述代码中,binarySearch
函数实现了二分法查找算法。它通过传入的参数 left
和 right
来确定当前查找范围的左右边界,然后通过计算中间位置 mid
来确定需要查找的值在左半边还是右半边。如果找到目标值,就返回其索引;如果没有找到目标值,就返回 -1。
在 main
函数中,我们定义了一个有序数组 arr
,并设定了目标值 target
。然后,我们调用 binarySearch
函数来查找目标值在数组中的索引,并根据返回结果进行输出。