二分法查找算法是一種高效的查找算法,適用于已經(jīng)排好序的數(shù)組。下面是C語言實現(xiàn)二分法查找算法的代碼:
#include <stdio.h>
// 二分法查找算法
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
// 找到目標(biāo)值
if (arr[mid] == target) {
return mid;
}
// 目標(biāo)值在右半邊
if (arr[mid] < target) {
left = mid + 1;
}
// 目標(biāo)值在左半邊
else {
right = mid - 1;
}
}
// 沒有找到目標(biāo)值
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("目標(biāo)值 %d 不存在數(shù)組中。\n", target);
} else {
printf("目標(biāo)值 %d 在數(shù)組中的索引為 %d。\n", target, result);
}
return 0;
}
在上述代碼中,binarySearch
函數(shù)實現(xiàn)了二分法查找算法。它通過傳入的參數(shù) left
和 right
來確定當(dāng)前查找范圍的左右邊界,然后通過計算中間位置 mid
來確定需要查找的值在左半邊還是右半邊。如果找到目標(biāo)值,就返回其索引;如果沒有找到目標(biāo)值,就返回 -1。
在 main
函數(shù)中,我們定義了一個有序數(shù)組 arr
,并設(shè)定了目標(biāo)值 target
。然后,我們調(diào)用 binarySearch
函數(shù)來查找目標(biāo)值在數(shù)組中的索引,并根據(jù)返回結(jié)果進(jìn)行輸出。