(1)根据输入的查找表的表长n和n个关键字值,建立顺序查找表,并在此查找表中用顺序查找方法查找给定关键值的记录,最后输出查找结果。 (2)根据输入的查找表的表长n和n个按升排列的关键字值,建立有序顺序查找表,并在此查找表中用二分查找方法查找给定关键值的记录,最后输出查找结果。 (3)主程序中要求设计一个菜单,允许用户通过菜单来多次选择执行哪一种查找操作。使用c语言
时间: 2024-03-26 13:34:55 浏览: 153
下面是使用 C 语言实现的顺序查找和二分查找:
```c
#include <stdio.h>
#include <stdlib.h>
// 顺序查找
int sequentialSearch(int *arr, int n, int key) {
for (int i = 0; i < n; ++i) {
if (arr[i] == key) {
return i;
}
}
return -1;
}
// 二分查找
int binarySearch(int *arr, int n, int key) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int n, menu, key;
printf("请输入查找表的表长n:");
scanf("%d", &n);
int *arr = (int *) malloc(n * sizeof(int));
printf("请输入%d个关键字值:", n);
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
while (1) {
printf("请选择查找方法:\n");
printf("1. 顺序查找\n");
printf("2. 二分查找\n");
printf("3. 退出程序\n");
scanf("%d", &menu);
switch (menu) {
case 1:
printf("请输入要查找的关键值:");
scanf("%d", &key);
int index1 = sequentialSearch(arr, n, key);
if (index1 == -1) {
printf("没有找到该记录\n");
} else {
printf("找到了该记录,位置为:%d\n", index1);
}
break;
case 2:
printf("请输入要查找的关键值:");
scanf("%d", &key);
int index2 = binarySearch(arr, n, key);
if (index2 == -1) {
printf("没有找到该记录\n");
} else {
printf("找到了该记录,位置为:%d\n", index2);
}
break;
case 3:
free(arr);
return 0;
default:
printf("无效的选择,请重新输入\n");
break;
}
}
}
```
该程序会先让用户输入查找表的表长和关键字值,然后进入一个菜单循环,允许用户多次选择执行顺序查找、二分查找或退出程序。
阅读全文