实现线性表的查找操作。 顺序查找。要求:顺序表的第0个元素赋值为要查找的关键字key,并从顺序表最后一个元素,依次向前查找。 折半查找。要求:对顺序表中关键字按非递减顺序排列后,使用折半查找算法进行查找。 输入说明: 第1行输入顺序表中关键字的个数n; 第2行依次输入顺序表中各关键字的值; 第3行输入要查找的关键字key。 输出说明 输出比较次数,及查找是否成功。(其中的标点符号为中文全角标点符号) 输入样例1: 6 99 12 47 5 8 69 5 输出样例1: 顺序查找比较3次,查找成功! 折半查找比较2次,查找成功! 输入样例2: 6 99 12 47 5 8 69 43 输出样例2: 顺序查找比较7次,查找失败! 折半查找比较3次,查找失败!按照以上要求,使用c++实现,给出完整代码
时间: 2024-03-10 11:46:42 浏览: 63
顺序表查找算法的描述-排序new
顺序查找代码实现:
```c++
#include <iostream>
using namespace std;
int main() {
int n, key;
cin >> n;
int a[n+1];
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
cin >> key;
a[0] = key;
int i;
for (i = n; a[i] != key; i--);
if (i == 0) {
cout << "顺序查找比较" << n << "次,查找失败!" << endl;
} else {
cout << "顺序查找比较" << n-i+1 << "次,查找成功!" << endl;
}
return 0;
}
```
折半查找代码实现:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, key;
cin >> n;
int a[n+1];
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
cin >> key;
sort(a+1, a+n+1);
int left = 1, right = n, mid, cnt = 0;
while (left <= right) {
mid = (left + right) / 2;
cnt++;
if (a[mid] == key) {
cout << "折半查找比较" << cnt << "次,查找成功!" << endl;
return 0;
} else if (a[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
cout << "折半查找比较" << cnt << "次,查找失败!" << endl;
return 0;
}
```
阅读全文