c语言二分查找法
时间: 2023-07-02 14:05:40 浏览: 110
二分查找,也叫折半查找,是一种在有序数组中查找某一特定元素的搜索算法。其基本思想是:每次取中间位置的值与目标值进行比较,如果中间位置的值比目标值大,则在数组的左半部分继续查找,如果中间位置的值比目标值小,则在数组的右半部分继续查找,直到查找到目标值或者数组被查找完毕。
下面是 C 语言的二分查找实现:
```c
#include<stdio.h>
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
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; // 没有找到目标元素
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11};
int n = sizeof(arr) / sizeof(int);
int target = 7;
int index = binary_search(arr, n, target);
if (index != -1) {
printf("%d 找到了,下标是 %d\n", target, index);
} else {
printf("%d 没有找到!\n", target);
}
return 0;
}
```
运行结果为:
```
7 找到了,下标是 3
```
上述代码中,`binary_search` 函数用于实现二分查找,其中 `arr` 是有序数组,`n` 是数组的长度,`target` 是要查找的目标元素。函数返回值为目标元素在数组中的下标,如果没有找到目标元素,则返回 `-1`。
在 `main` 函数中,我们定义了一个有序数组 `arr` 和目标元素 `target`,然后调用 `binary_search` 函数进行查找。如果找到了目标元素,则输出它在数组中的下标,否则输出没有找到的提示信息。
阅读全文