N个有序整数已放在一维数组中。采用函数利用折半查找算法查找整数m在数组中的位置。若找到返回其下标值;反之,返回-1。编写主函数实现函数调用。代码并详细解释
时间: 2023-04-03 09:04:10 浏览: 212
利用折半查找整数m在数组中的位置。
可以回答这个问题。
折半查找算法,也称二分查找,是一种高效的查找算法。它的基本思想是将有序数组分成两部分,取中间位置的元素与待查找元素进行比较,如果相等则返回其下标值,如果待查找元素小于中间位置的元素,则在左半部分继续查找,否则在右半部分继续查找,直到找到或者查找完整个数组。
下面是采用折半查找算法查找整数m在数组中的位置的函数实现:
```c
int binarySearch(int arr[], int n, int m) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == m) {
return mid;
} else if (arr[mid] < m) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
其中,arr是有序整数数组,n是数组长度,m是待查找的整数。函数返回整数m在数组中的位置,如果找不到则返回-1。
下面是主函数实现函数调用的代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int m);
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int m = 7;
int index = binarySearch(arr, n, m);
if (index == -1) {
printf("未找到%d\n", m);
} else {
printf("%d在数组中的位置是%d\n", m, index);
}
return 0;
}
```
输出结果为:
```
7在数组中的位置是3
```
以上就是采用折半查找算法查找整数m在数组中的位置的函数实现和主函数实现函数调用的代码。
阅读全文