编程实现如下功能: (1)根据输入的查找表的表长n和n个关键字值,建立顺序查找表,并在此查找表中用顺序查找方法查找给定关键值的记录,最后输出查找结果。 (2)根据输入的查找表的表长n和n个按升排列的关键字值,建立有序顺序查找表,并在此查找表中用二分查找方法查找给定关键值的记录,最后输出查找结果。 (3)主程序中要求设计一个菜单,允许用户通过菜单来多次选择执行哪一种查找操作。
时间: 2024-03-22 18:38:12 浏览: 23
好的,这个功能可以使用 C 语言实现。以下是代码实现:
```c
#include <stdio.h>
// 顺序查找函数
int sequential_search(int arr[], int n, int key) {
int i;
for (i = 0; i < n; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}
// 二分查找函数
int binary_search(int arr[], int n, int key) {
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
int main() {
int n, i, key, choice;
printf("请输入查找表的长度:");
scanf("%d", &n);
int arr[n];
printf("请依次输入%d个关键字值:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("请选择查找方式:\n");
printf("1. 顺序查找\n");
printf("2. 二分查找\n");
printf("请输入选项:");
scanf("%d", &choice);
printf("请输入要查找的关键字:");
scanf("%d", &key);
int result;
switch (choice) {
case 1:
result = sequential_search(arr, n, key);
if (result == -1) {
printf("未找到该关键字!\n");
} else {
printf("该关键字的位置为:%d\n", result);
}
break;
case 2:
result = binary_search(arr, n, key);
if (result == -1) {
printf("未找到该关键字!\n");
} else {
printf("该关键字的位置为:%d\n", result);
}
break;
default:
printf("选项错误!\n");
break;
}
return 0;
}
```
这个程序可以先输入查找表的长度和关键字值,然后让用户选择查找方式,最后输入要查找的关键字。程序会根据用户的选择使用顺序查找或二分查找,并输出查找结果。用户可以通过菜单多次选择执行不同的查找操作。
阅读全文