下面是使用遞歸實現二分法查找的C語言代碼示例:
#include <stdio.h>
int binarySearch(int arr[], int low, int high, int key) {
if (low > high) {
return -1; // key not found
}
int mid = low + (high - low) / 2;
if (arr[mid] == key) {
return mid; // key found at index mid
} else if (arr[mid] < key) {
return binarySearch(arr, mid + 1, high, key); // search in the right half
} else {
return binarySearch(arr, low, mid - 1, key); // search in the left half
}
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 10;
int index = binarySearch(arr, 0, n - 1, key);
if (index != -1) {
printf("Element found at index: %d\n", index);
} else {
printf("Element not found\n");
}
return 0;
}
在上面的代碼中,binarySearch
函數使用遞歸的方式實現了二分法查找。函數接受一個整型數組arr
、查找范圍的起始下標low
、結束下標high
和要查找的關鍵值key
作為參數。函數首先計算中間元素的下標mid
,然后分別判斷arr[mid]
和key
的大小關系,根據不同情況選擇在左半部分或右半部分繼續查找,直到找到目標元素或查找范圍為空。
在main
函數中,我們定義了一個整型數組arr
,并調用binarySearch
函數來查找key=10
在數組中的位置。最終輸出查找結果。