在有序表中利用折半查找查找关键字并输出查找位置c++完整代码
时间: 2023-11-22 10:56:33 浏览: 76
下面是一个示例代码,实现了在有序表中利用折半查找查找关键字并输出查找位置。
```c++
#include <iostream>
using namespace std;
// 有序表折半查找
int binarySearch(int arr[], int len, int key)
{
int low = 0, high = len - 1;
while (low <= high) {
int 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};
int len = sizeof(arr) / sizeof(int);
int key = 7;
int pos = binarySearch(arr, len, key);
if (pos == -1) {
cout << "没有找到" << endl;
} else {
cout << "找到了,位置是:" << pos << endl;
}
return 0;
}
```
上述代码中,binarySearch 函数实现了有序表的折半查找。该函数接受三个参数:有序数组 arr,数组长度 len,以及要查找的关键字 key。函数返回值为 int 类型,表示查找到的关键字在数组中的位置,如果没有找到则返回 -1。在主函数中,我们定义了一个有序数组 arr,并调用 binarySearch 函数查找关键字 7 在数组中的位置。最终输出查找结果。
阅读全文