一个有序数组,用两分查找法,找到输入的那个数。十以内。
时间: 2024-03-05 18:50:57 浏览: 23
下面是一个使用两分查找法查找有序数组的例子,要求在数组 `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]` 中查找输入的数值:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int target);
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int target;
printf("Please enter a number between 1 and 10: ");
scanf("%d", &target);
int index = binarySearch(arr, 0, n - 1, target);
if (index == -1) {
printf("Element not found.\n");
} else {
printf("Element found at index %d.\n", index);
}
return 0;
}
int binarySearch(int arr[], int left, int right, int target)
{
if (left > right) {
return -1;
}
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
return binarySearch(arr, left, mid - 1, target);
} else {
return binarySearch(arr, mid + 1, right, target);
}
}
```
在这个例子中,我们定义了一个有序数组 `arr`,并使用 `binarySearch()` 函数在其中查找目标元素 `target`。该函数接受四个参数:要搜索的数组 `arr`、数组的左边界 `left`、右边界 `right` 和目标元素 `target`。在函数中,我们首先检查左边界是否大于右边界,如果是,则表明目标元素不在数组中,返回 -1。否则,我们计算中间下标 `mid`,并将中间元素 `arr[mid]` 与目标元素 `target` 进行比较。如果它们相等,则返回中间下标。否则,如果中间元素大于目标元素,则表明目标元素可能在数组的左半部分,我们递归调用 `binarySearch()` 函数查找左半部分。如果中间元素小于目标元素,则表明目标元素可能在数组的右半部分,我们递归调用 `binarySearch()` 函数查找右半部分。最终,如果找到目标元素,则返回其下标,否则返回 -1。
需要注意的是,由于本例中要查找的数值在 1~10 之间,因此递归调用 `binarySearch()` 函数时,我们传递给函数的左边界为 0,右边界为 `n - 1`(数组中元素个数减 1)。这样可以确保函数只搜索数组中存在的元素,避免了不必要的递归调用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)