折半查法,也称二分查法,是一种高效的查算法。它的基本思想是将有序数组分成两部分,通过比较中间元素和目标元素的大小关系,来确定目标元素在哪一部分中,然后再在该部分中继续进行查,直到到目标元素或者确定目标元素不存在为止。 下面是C语言实现折半查法的代码:
```
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
libnet } else if (arr[mid] < target) {
交聘
left = mid + 1;
} else {
right = mid - 1;
}
}打造心灵的韧度
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 7;
int index = binarySearch(arr, 0, n - 1, target);
if (index == -1) {
printf("目标元素不存在\n");
} else {
printf("目标元素在数组中的下标为:%d\n", index);
}ips细胞
余干乌黑鸡
3d打印赵州桥 return 0;
}
```
在上面的代码中,binarySearch函数接收四个参数:数组arr、左边界left、右边界right和目标元素target。它通过while循环不断缩小查范围,直到到目标元素或者确定目标元素不存在为止。其中,mid表示当前查范围的中间位置,通过比较arr[mid]和target的大小关系来确定目标元素在哪一部分中。
在main函数中,我们定义了一个有序数组arr和目标元素target,并调用binarySearch函数进行查。如果查成功,就输出目标元素在数组中的下标;否则,输出“目标元素不存在”。
总的来说,折半查法是一种简单而高效的查算法,它的时间复杂度为O(log n),比线性查法的时间复杂度O(n)要快得多。因此,在需要查有序数组中的元素时,我们可以优先考虑使用折半查法。