用C语言写一个折半查找算法,并给出对复杂度的分析
时间: 2024-05-08 10:15:27 浏览: 197
以下是折半查找算法的C语言实现:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int target = 5;
int index = binarySearch(arr, 0, 4, target);
if (index == -1) {
printf("Target not found\n");
} else {
printf("Target found at index %d\n", index);
}
return 0;
}
```
折半查找算法的时间复杂度为O(logn),其中n为数组的长度。这是因为每次查找都会将查找范围缩小一半,最坏情况下需要查找logn次才能找到或确定目标元素不存在。因此,折半查找算法具有很高的效率,适用于大型有序数组的查找。
阅读全文