用c语言实现折半查找算法
时间: 2023-07-27 16:07:15 浏览: 59
好的,以下是使用 C 语言实现折半查找算法的示例代码:
```c
#include <stdio.h>
int binary_search(int nums[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 没有找到目标元素
}
int main() {
int nums[] = {1, 3, 5, 7, 9};
int n = sizeof(nums) / sizeof(nums[0]);
int target = 5;
int index = binary_search(nums, n, target);
if (index == -1) {
printf("没有找到目标元素\n");
} else {
printf("目标元素在数组中的下标为 %d\n", index);
}
return 0;
}
```
其中,nums 表示要查找的有序数组,n 表示数组的长度,target 表示目标元素。如果找到目标元素,返回其下标;否则返回 -1。
注意,在实现时需要保证数组是有序的,否则无法使用折半查找算法。此外,由于 C 语言中整数除法的特性,当 left 和 right 取较大值时,可能会导致 mid 溢出,因此建议使用 (left + (right - left) / 2) 的形式来计算 mid。