由N个有序整数组成的数列已放在一维数组中,给定程序的功能是:利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值,否则返回-1。
时间: 2024-02-03 12:13:55 浏览: 85
javascript 折半查找字符在数组中的位置(有序列表).docx
以下是一个利用折半查找法查找整数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) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
```
其中,`arr`为要查找的有序数组,`n`为数组的长度,`m`为要查找的整数。首先将左右边界设为数组的首尾元素下标,然后在循环中计算中间位置的下标。如果该位置的元素值等于要查找的整数`m`,直接返回该位置下标,否则根据数组有序的特性,如果该位置的元素值大于`m`,说明要查找的数在左半部分,将右边界设为该位置前一个元素的下标;如果该位置的元素值小于`m`,说明要查找的数在右半部分,将左边界设为该位置后一个元素的下标。直到左右边界相遇,说明整个数组中没有要查找的数,返回-1。
阅读全文