编程实现如下功能: (1)根据输入的查找表的表长n和n个关键字值,建立顺序查找表,并在此查找表中用顺序查找方法查找给定关键值的记录,最后输出查找结果。 (2)根据输入的查找表的表长n和n个按升排列的关键字值,建立有序顺序查找表,并在此查找表中用二分查找方法查找给定关键值的记录,最后输出查找结果。 (3)主程序中要求设计一个菜单,允许用户通过菜单来多次选择执行哪一种查找操作。
时间: 2024-03-21 18:43:47 浏览: 65
好的,我可以为你提供一个基于C++语言的实现,代码如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
// 顺序查找函数
int SequentialSearch(int a[], int n, int key)
{
for (int i = 0; i < n; i++)
{
if (a[i] == key)
return i;
}
return -1;
}
// 二分查找函数
int BinarySearch(int a[], int n, int key)
{
int left = 0, right = n - 1, mid;
while (left <= right)
{
mid = (left + right) / 2;
if (a[mid] == key)
return mid;
else if (a[mid] > key)
right = mid - 1;
else
left = mid + 1;
}
return -1;
}
int main()
{
int n, choice;
cout << "请输入查找表长度:";
cin >> n;
int* a = new int[n];
cout << "请输入" << n << "个关键字值:";
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n); // 按升序排列
cout << "请选择查找方式:1.顺序查找 2.二分查找" << endl;
cin >> choice;
int key, index;
while (1) // 循环执行
{
cout << "请输入要查找的关键字值:";
cin >> key;
if (choice == 1)
index = SequentialSearch(a, n, key);
else
index = BinarySearch(a, n, key);
if (index == -1)
cout << "未找到该记录!" << endl;
else
cout << "已找到该记录,位置为" << index << endl;
cout << "请选择继续查找方式:1.顺序查找 2.二分查找 0.退出" << endl;
cin >> choice;
if (choice == 0)
break;
}
delete[] a;
return 0;
}
```
程序的运行流程如下:
1. 首先要输入查找表的长度n和n个关键字值,建立顺序查找表,并按升序排列建立有序顺序查找表。
2. 接着要选择查找方式,1表示顺序查找,2表示二分查找。
3. 然后进入一个循环,输入要查找的关键字值,根据选择的方式进行查找,并输出查找结果。
4. 最后要选择继续查找方式,1表示顺序查找,2表示二分查找,0表示退出程序。
希望这个代码能够对你有所帮助!
阅读全文