C语言基础中的二分查找
时间: 2023-03-30 19:01:16 浏览: 72
二分查找是一种高效的查找算法,它可以在有序数组中快速查找指定元素。它的基本思想是将数组分成两部分,然后判断要查找的元素在哪一部分中,然后再在该部分中继续进行二分查找,直到找到要查找的元素或者确定该元素不存在为止。
相关问题
c语言数组的二分查找
C语言数组的二分查找是一种高效的查找方法,它可以在一个有序数组中快速查找指定的数字。其基本思想是将数组分成两部分,然后判断要查找的数字在哪一部分中,再在该部分中继续进行二分查找,直到找到要查找的数字或者确定该数字不存在为止。
下面是C语言数组的二分查找的代码实现:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int key)
{
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 5;
int index = binary_search(arr, n, key);
if (index == -1) {
printf("找不到\n");
} else {
printf("找到了,下标是:%d\n", index);
}
return 0;
}
```
其中,`binary_search`函数实现了二分查找的核心算法,`main`函数则是一个简单的测试程序,用于查找数组中的指定数字并输出其下标。
C语言乱序的二分查找
C语言乱序的二分查找可以使用以下代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int binary_search(int arr[], int low, int high, int target) {
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
int main() {
int arr[] = {6, 3, 9, 1, 5, 8, 2, 4, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
// 将数组排序
qsort(arr, n, sizeof(int), cmp);
int index = binary_search(arr, 0, n - 1, target);
if (index == -1) {
printf("目标元素不存在\n");
} else {
printf("目标元素在数组中的下标为 %d\n", index);
}
return 0;
}
```
这里使用了 C 语言的标准库函数 `qsort` 对数组进行排序,再使用二分查找查找指定元素。注意,在使用二分查找之前,需要先将数组排序。