代码如下:
#include<stdio.h>
int binary_search(int arr[], int size, int target) {
int low = 0;
int high = size - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17};
sizeof用来求字节数sizeof(arr)表示整个数组所占用的字节数所以用除号
int size = sizeof(arr) / sizeof(arr[0]);
int target = 7;
int result = binary_search(arr, size, target);
if (result != -1) {
printf("目标元素 %d 在数组中的索引为: %d\n", target, result);
} else {
printf("目标元素不存在于数组中\n");
}
return 0;
}
代码的核心算法是:要算根据数组的中心值与目标值向比较如果目标值大于中心值则目标值在中心值的右边mid需要进行加一操作将最后的结果返回反之则减一;当比对完都找不到该值则返回-1