用C语言1. 先依次输入元素为简单类型(int、char)或自定义结构体类型(如订单信息或学生信息或员工信息)的数个数据元素建立顺序存储的线性表,然后①以该线性表为查找表进行顺序查找;②用冒泡排序对该线性表按某个关键字值进行排序,在排序之后的线性表之上进行折半查找。
时间: 2024-03-02 17:53:23 浏览: 59
好的,我来解答你的问题。
首先,我们需要定义一个结构体来表示订单信息或学生信息或员工信息,例如:
```c
typedef struct {
int id; // 编号
char name[20]; // 姓名
int age; // 年龄
float salary; // 工资
} Employee;
```
接下来,我们可以定义一个动态数组来存储多个员工信息:
```c
Employee *employees; // 定义指向员工信息的指针
int size; // 定义员工信息数组的大小
// 动态分配员工信息数组
printf("请输入员工信息的个数:");
scanf("%d", &size);
employees = (Employee *)malloc(sizeof(Employee) * size);
// 依次输入员工信息
for (int i = 0; i < size; i++) {
printf("请输入第%d个员工信息:\n", i+1);
printf("编号:");
scanf("%d", &employees[i].id);
printf("姓名:");
scanf("%s", employees[i].name);
printf("年龄:");
scanf("%d", &employees[i].age);
printf("工资:");
scanf("%f", &employees[i].salary);
}
```
接下来,我们可以实现顺序查找算法,代码如下:
```c
// 顺序查找算法
int SeqSearch(Employee *arr, int n, int key) {
for (int i = 0; i < n; i++) {
if (arr[i].id == key) {
return i; // 找到了,返回下标
}
}
return -1; // 没找到,返回-1
}
// 测试顺序查找算法
int key;
printf("请输入要查找的员工编号:");
scanf("%d", &key);
int index = SeqSearch(employees, size, key);
if (index == -1) {
printf("没有找到编号为%d的员工\n", key);
} else {
printf("找到了编号为%d的员工,信息如下:\n", key);
printf("编号:%d,姓名:%s,年龄:%d,工资:%f\n", employees[index].id, employees[index].name, employees[index].age, employees[index].salary);
}
```
接下来,我们可以实现冒泡排序算法,代码如下:
```c
// 冒泡排序算法
void BubbleSort(Employee *arr, int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j].age > arr[j+1].age) {
Employee temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
// 测试冒泡排序算法
BubbleSort(employees, size);
printf("按年龄排序后的员工信息如下:\n");
for (int i = 0; i < size; i++) {
printf("编号:%d,姓名:%s,年龄:%d,工资:%f\n", employees[i].id, employees[i].name, employees[i].age, employees[i].salary);
}
```
最后,我们可以实现折半查找算法,代码如下:
```c
// 折半查找算法
int BinarySearch(Employee *arr, int n, int key) {
int left = 0, right = n-1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid].id == key) {
return mid; // 找到了,返回下标
}
if (arr[mid].id < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 没找到,返回-1
}
// 测试折半查找算法
int key;
printf("请输入要查找的员工编号:");
scanf("%d", &key);
int index = BinarySearch(employees, size, key);
if (index == -1) {
printf("没有找到编号为%d的员工\n", key);
} else {
printf("找到了编号为%d的员工,信息如下:\n", key);
printf("编号:%d,姓名:%s,年龄:%d,工资:%f\n", employees[index].id, employees[index].name, employees[index].age, employees[index].salary);
}
```
以上就是用C语言实现建立顺序存储的线性表、顺序查找、冒泡排序和折半查找的完整代码了。
阅读全文