用c++表示解决数据结构问题:建立一个20个以上数据的有序顺序表表中可以仅存放记录的关键字,实现对该有序表的折半查找算法
时间: 2024-03-10 09:48:17 浏览: 71
利用C++实现以下经典数据结构算法:线性表、栈、队列、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法)、树.zip
好的,以下是用 C++ 实现折半查找算法的代码:
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 100;
int a[MAX_SIZE] = {3, 6, 8, 11, 18, 21, 24, 27, 29, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66};
int binarySearch(int key, int low, int high) {
while (low <= high) {
int mid = (low + high) / 2;
if (a[mid] == key) {
return mid;
} else if (a[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
int main() {
int key;
cout << "请输入要查找的数字: ";
cin >> key;
int index = binarySearch(key, 0, 20);
if (index == -1) {
cout << "未找到该数字!" << endl;
} else {
cout << "数字 " << key << " 在第 " << index + 1 << " 个位置" << endl;
}
return 0;
}
```
上述代码中,使用数组 `a` 存储有序表的数据,其中 `binarySearch` 函数为折半查找算法的实现,`key` 为要查找的数字,`low` 和 `high` 分别为有序表的起始位置和终止位置。最后根据查找结果输出相应的信息。
阅读全文