C++ 键入一组数据,使用顺序查找和折半查找某个数据
时间: 2024-02-09 14:10:51 浏览: 64
好的,下面是一个简单的实现。
首先,我们定义一个结构体来表示线性表:
```c++
struct LinearList {
int* data; // 存储数据的数组指针
int length; // 线性表长度
};
```
接下来,我们实现顺序查找:
```c++
// 顺序查找
int sequentialSearch(LinearList list, int key) {
for (int i = 0; i < list.length; i++) {
if (list.data[i] == key) {
return i; // 返回元素下标
}
}
return -1; // 没有找到
}
```
然后我们实现折半查找:
```c++
// 折半查找
int binarySearch(LinearList list, int key) {
int low = 0, high = list.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (list.data[mid] == key) {
return mid; // 返回元素下标
} else if (list.data[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1; // 没有找到
}
```
最后,我们编写一个简单的程序来测试这些函数:
```c++
#include <iostream>
using namespace std;
int main() {
LinearList list;
cout << "请输入线性表长度:";
cin >> list.length;
list.data = new int[list.length];
cout << "请输入线性表元素:";
for (int i = 0; i < list.length; i++) {
cin >> list.data[i];
}
int key;
cout << "请输入要查找的元素:";
cin >> key;
int index = sequentialSearch(list, key);
if (index == -1) {
cout << "未找到元素 " << key << endl;
} else {
cout << "元素 " << key << " 的下标为 " << index << endl;
}
index = binarySearch(list, key);
if (index == -1) {
cout << "未找到元素 " << key << endl;
} else {
cout << "元素 " << key << " 的下标为 " << index << endl;
}
return 0;
}
```
输入格式为:
```
请输入线性表长度:5
请输入线性表元素:1 2 3 4 5
请输入要查找的元素:3
```
输出结果应该是:
```
元素 3 的下标为 2
元素 3 的下标为 2
```
希望这个简单的实现对您有所帮助。
阅读全文