降序二分查找c语言代码
时间: 2023-11-20 09:55:01 浏览: 38
以下是降序二分查找的C语言代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x) {
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] > x)
l = mid + 1;
else
r = mid - 1;
}
return -1;
}
int main() {
int arr[] = {10, 8, 6, 4, 2, 0};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 4;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
```
相关问题
C语言实现下界二分查找
好的,下界二分查找的思路是先用二分查找找到目标值的位置,然后往左继续二分查找,直到找到第一个小于等于目标值的位置。具体的代码实现如下:
```
int lower_bound(int* arr, int n, int target) {
int left = 0, right = n - 1, res = -1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] >= target) {
res = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return res;
}
```
其中,arr 表示要查找的数组,n 表示数组的长度,target 表示要查找的目标值。函数返回的是小于等于目标值的最大下标,如果不存在小于等于目标值的元素,返回 -1。
注意,这个代码实现是针对升序数组的,如果是降序数组,需要将第 6 行和第 8 行的符号反转即可。
利用C语言实现二分查找算法。
好的,以下是一个简单的C语言代码实现二分查找算法的例子:
```c
#include <stdio.h>
int binary_search(int arr[], int len, int target) {
int low = 0;
int high = len - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11};
int len = sizeof(arr) / sizeof(arr[0]);
int target = 7;
int index = binary_search(arr, len, target);
if (index == -1) {
printf("The target is not found in the array.\n");
} else {
printf("The target is found at index %d.\n", index);
}
return 0;
}
```
该程序首先定义一个 `binary_search` 函数,接受一个已排序的数组、数组长度和一个目标值作为参数,返回目标值在数组中的索引。如果目标值不在数组中,返回 -1。
接下来,在 `main` 函数中,我们定义一个已排序的数组 `arr`,数组长度 `len` 和目标值 `target`。然后,我们调用 `binary_search` 函数来查找目标值在数组中的位置,并打印出结果。
注意,这个例子假设数组已经按升序排列。如果数组是按降序排列的,只需要将 `if` 和 `else` 语句块的条件判断反过来即可。