C语言编写一个二分查找函数
时间: 2023-07-19 10:08:03 浏览: 450
好的,以下是一个简单的 C 语言二分查找函数示例:
```c
int binarySearch(int arr[], int left, int right, int x) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
```
该函数的参数如下:
- `arr`:需要进行查找的数组。
- `left`:数组起始位置。
- `right`:数组结束位置。
- `x`:需要查找的元素。
使用该函数时,需要将 `arr` 数组按照从小到大的顺序排序。如果函数返回的是 `-1`,则说明在数组中没有找到需要查找的元素。否则,返回值为需要查找元素在数组中的索引位置。
希望对你有所帮助!
相关问题
用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[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", result);
}
return 0;
}
```
该函数接受一个整数数组,数组的左边界和右边界,以及要查找的元素。它使用while循环,在左右边界之间进行二分查找。如果找到元素,返回其索引;否则,返回-1。
在主函数中,我们创建一个整数数组,使用sizeof运算符获取数组的大小,并在数组中查找元素7。如果找到元素,则输出其索引;否则,输出"Element not found"。
请使用C语言编写二分查找程序
好的,以下是使用C语言编写的二分查找程序:
```c
#include <stdio.h>
int binarySearch(int arr[], int len, int key) {
int left = 0, right = len - 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, 3, 5, 7, 9, 11};
int len = sizeof(arr) / sizeof(arr[0]);
int key = 7;
int index = binarySearch(arr, len, key);
if (index == -1) {
printf("未找到 %d\n", key);
} else {
printf("找到 %d, 下标为 %d\n", key, index);
}
return 0;
}
```
该程序定义了一个名为`binarySearch`的函数,它接收一个已排序的整数数组、数组长度和要查找的关键字作为参数,返回关键字在数组中的下标,如果未找到则返回-1。主函数中定义了一个已排序的整数数组、数组长度和要查找的关键字,然后调用`binarySearch`函数进行查找,并根据返回值输出查找结果。
二分查找的思路是先将要查找的区间的左右端点确定下来,然后将中间位置的元素与要查找的关键字进行比较,如果相等则返回中间位置,如果中间位置的元素小于要查找的关键字则说明要查找的关键字在中间位置的右侧,将左端点移到中间位置的右侧,否则将右端点移到中间位置的左侧,然后继续进行查找,直到左右端点相遇或者找到了要查找的关键字为止。