c语言使用顺序表实现冒泡排序算法,并在主函数中输入元素,再输出排序结果(需要用到顺序表的各种基本运算)
时间: 2024-12-13 12:23:17 浏览: 3
在C语言中,我们可以使用顺序表(通常通过数组实现)来实现冒泡排序算法。以下是简单的步骤:
```c
#include <stdio.h>
// 定义顺序表结构体
typedef struct {
int* data; // 存储数据的指针
int size; // 序列长度
int capacity; // 序列容量
} List;
// 初始化顺序表
void init_list(List* list) {
list->data = NULL;
list->size = 0;
list->capacity = 0;
}
// 向列表添加元素(若已满则扩容)
void add_element(List* list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2; // 若满,则扩大一倍容量
list->data = realloc(list->data, sizeof(int) * list->capacity); // 动态扩容
}
list->data[list->size++] = value;
}
// 冒泡排序函数
void bubble_sort(List* list) {
for (int i = 0; i < list->size - 1; i++) {
for (int j = 0; j < list->size - i - 1; j++) {
if (list->data[j] > list->data[j + 1]) {
// 交换相邻元素
int temp = list->data[j];
list->data[j] = list->data[j + 1];
list->data[j + 1] = temp;
}
}
}
}
// 主函数
int main() {
List list;
init_list(&list);
// 输入元素
int n;
printf("请输入元素个数: ");
scanf("%d", &n);
while (n--) {
int num;
printf("请输入第 %d 个元素: ", n + 1);
scanf("%d", &num);
add_element(&list, num);
}
// 输出排序前的数据
printf("排序前的序列: \n");
for (int i = 0; i < list.size; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
// 排序并输出结果
bubble_sort(&list);
printf("排序后的序列: \n");
for (int i = 0; i < list.size; i++) {
printf("%d ", list.data[i]);
}
return 0;
}
```
在这个例子中,我们首先初始化一个顺序表`List`,然后在主函数中读取用户输入的元素,依次添加到列表中。接着使用冒泡排序算法对列表进行排序,最后打印出排序前后的结果。
阅读全文