二分查找C语言实现代码
时间: 2023-05-16 21:04:45 浏览: 123
以下是二分查找的C语言实现代码:
```c
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;
if (arr[mid] < x)
l = mid + 1;
else
r = mid - 1;
}
return -1;
}
```
该函数接受一个已排序的整数数组、数组的左右边界以及要查找的元素,返回该元素在数组中的索引,如果不存在则返回-1。
相关问题
c语言实现二分查找代码
二分查找法是一种高效的查找方法,它要求被查找的数组必须有序。以下是C语言实现二分查找法的代码:
```c
void BinarySearch(int* arr, int key, int left, int right) {
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] > key) {
right = mid - 1;
} else if (arr[mid] < key) {
left = mid + 1;
} else {
printf("找到了,对应的下标为:%d\n", mid);
return;
}
}
printf("找不到\n");
}
```
在这个代码中,我们通过不断缩小查找范围,从数组的中间开始与目标数字比较。如果中间元素大于目标数字,那么目标数字一定在左侧范围内,将右指针移到中间元素的左侧;如果中间元素小于目标数字,那么目标数字一定在右侧范围内,将左指针移到中间元素的右侧;如果中间元素等于目标数字,则找到了目标数字的下标。如果左指针大于右指针,表示没有找到目标数字。
降序二分查找c语言代码
以下是降序二分查找的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;
}
```