请用C语言写出程序建立一个有序的顺序表,利用折半查找方法查找元素。要求能进行多次查找,并对每次查找输出结果,成功则输出在有序表中的位置,失败则输出“无此元素”的过程
时间: 2024-02-23 07:57:58 浏览: 57
C语言程序设编写程序在数组中查找一个数要求 ⑴用顺序查找实现 ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
5星 · 资源好评率100%
好的,以下是用 C 语言编写的程序,实现有序顺序表的建立和折半查找:
```c
#include <stdio.h>
// 定义有序顺序表结构体
typedef struct {
int data[10];
int length;
} OrderedList;
// 折半查找
int binary_search(OrderedList list, int x) {
int low = 0, high = list.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (list.data[mid] == x) {
return mid;
} else if (list.data[mid] > x) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
int main() {
// 建立有序顺序表
OrderedList list = {{1, 3, 5, 7, 9, 11, 13, 15, 17, 19}, 10};
// 折半查找
while (1) {
int x;
printf("请输入要查找的元素:");
scanf("%d", &x);
int index = binary_search(list, x);
if (index == -1) {
printf("无此元素\n");
} else {
printf("元素在有序表中的位置为:%d\n", index);
}
}
return 0;
}
```
运行程序后,你可以不断输入要查找的元素,程序会输出其在有序表中的位置或者提示无此元素。
阅读全文