以下是一個用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; // 找到目標元素,返回索引
} else if (arr[mid] < target) {
left = mid + 1; // 目標元素在右側,更新左邊界
} else {
right = mid - 1; // 目標元素在左側,更新右邊界
}
}
return -1; // 沒有找到目標元素,返回-1
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int n = sizeof(arr) / sizeof(arr[0]); // 數組長度
int target = 12; // 目標元素
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
函數,該函數接受一個已經排序的整數數組arr
、左邊界left
、右邊界right
和目標元素target
作為參數。函數使用while循環來不斷縮小搜索范圍,直到找到目標元素或搜索范圍為空。如果找到目標元素,返回其索引;否則返回-1表示未找到。
在main
函數中,我們定義了一個已經排序的整數數組arr
,并使用sizeof
運算符計算出數組的長度n
。我們指定目標元素為12,并調用binarySearch
函數進行查找。最后根據返回結果輸出查找結果。