c语言二分法查找数组自定义函数
时间: 2023-08-27 18:05:28 浏览: 59
下面是一个使用二分法查找整数数组中指定元素的自定义函数实现:
```c
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;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
该函数接受四个参数:整数数组 `arr`、查找区间的左右端点 `left` 和 `right`,以及目标元素 `target`。函数首先计算中间位置 `mid`,然后将目标元素与 `arr[mid]` 进行比较,如果相等则返回 `mid`,否则根据大小关系缩小查找区间,并重复执行比较直到找到目标元素或者查找区间为空。如果最终未找到目标元素,则返回 `-1`。
相关问题
c语言二分法查找数组
以下是C语言实现二分法查找数组的代码示例:
```c
#include <stdio.h>
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;
}
if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? printf("Element is not present in array")
: printf("Element is present at index %d", result);
return 0;
}
```
c语言二分法查找数组自永定义函数实现
下面是用 C 语言实现二分查找算法的代码示例:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int key)
{
int low = 0, high = n - 1, mid;
while (low <= high)
{
mid = (low + high) / 2;
if (arr[mid] == key)
return mid;
else if (arr[mid] > key)
high = mid - 1;
else
low = mid + 1;
}
return -1;
}
int main()
{
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 11;
int index = binary_search(arr, n, key);
if (index == -1)
printf("%d not found in the array.\n", key);
else
printf("%d found at index %d.\n", key, index);
return 0;
}
```
在上述代码中,`binary_search` 函数用于实现二分查找算法。该函数接受三个参数:待查找的数组 `arr`、数组长度 `n` 和待查找的关键字 `key`。函数返回值为关键字在数组中的下标,若未找到则返回 -1。
在 `main` 函数中,定义了一个整型数组 `arr`,其元素为 {1, 3, 5, 7, 9, 11, 13, 15, 17},数组长度为 `n`。接着定义了一个关键字 `key`,其值为 11。然后调用 `binary_search` 函数进行查找,并将结果赋值给变量 `index`。最后根据 `index` 的值输出查找结果。