编写一个程序exp9-2.cpp,输出在顺序表(1,2,3,4,5,6,7,8,9,10)中采用折半查找方法查找关键字5的过程)
时间: 2024-12-19 11:16:13 浏览: 14
编写一个简单的C++程序来演示顺序表(假设是一个整数数组)中的折半查找过程,以查找关键字5。这里是一个基本的示例:
```cpp
#include <iostream>
using namespace std;
// 顺序列表表示
class List {
private:
int* data; // 数组存储位置
int size; // 长度
public:
List(int capacity) { // 初始化数组
data = new int[capacity];
size = 0;
}
void insert(int value) { // 插入元素到末尾
if (size == capacity) {
int* temp = new int[size * 2]; // 如果已满,扩大容量
for (int i = 0; i < size; ++i)
temp[i] = data[i];
delete[] data;
data = temp;
capacity *= 2;
}
data[size++] = value;
}
bool binarySearch(int target) { // 折半查找函数
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (data[mid] == target) {
cout << "找到元素 " << target << ",索引:" << mid << endl;
return true;
} else if (data[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
cout << "未找到元素 " << target << endl;
return false;
}
};
int main() {
List list(10); // 创建一个初始容量为10的顺序列表
for (int i = 1; i <= 10; ++i) {
list.insert(i);
}
// 使用折半查找查找关键字5
list.binarySearch(5);
return 0;
}
```
在这个程序中,首先创建了一个`List`类,包含插入元素和二分查找功能。在`main`函数里,我们初始化了列表并插入数字1到10,然后通过调用`binarySearch(5)`来查找关键字5。
运行这个程序,你会看到输出结果展示了查找过程中中间值的变化以及是否找到目标元素5。
阅读全文