使用顺序存储结构,完成顺序表的创建,并实现对顺序表的直接插入排序、冒泡排序的c语言代码
时间: 2024-02-26 17:55:13 浏览: 62
C语言实现顺序存储结构下的冒泡排序
好的,我知道了。关于顺序表的创建和排序,我可以为您提供以下的 C 语言代码示例:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义最大存储容量
// 定义顺序表结构体
typedef struct {
int data[MAXSIZE]; // 存储元素的一维数组
int length; // 顺序表的当前长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 直接插入排序
void InsertSort(SqList *L) {
int i, j;
for (i = 2; i <= L->length; i++) {
if (L->data[i] < L->data[i-1]) {
L->data[0] = L->data[i]; // 将待插入元素存放在哨兵位置
for (j = i-1; L->data[j] > L->data[0]; j--) {
L->data[j+1] = L->data[j]; // 记录后移
}
L->data[j+1] = L->data[0]; // 插入到正确位置
}
}
}
// 冒泡排序
void BubbleSort(SqList *L) {
int i, j, flag = 1;
for (i = 1; i < L->length && flag; i++) {
flag = 0;
for (j = L->length-1; j >= i; j--) {
if (L->data[j] < L->data[j-1]) {
int temp = L->data[j];
L->data[j] = L->data[j-1];
L->data[j-1] = temp;
flag = 1;
}
}
}
}
int main() {
SqList L;
int i;
// 创建顺序表
InitList(&L);
printf("请输入顺序表的长度:");
scanf("%d", &L.length);
printf("请输入顺序表的元素:");
for (i = 1; i <= L.length; i++) {
scanf("%d", &L.data[i]);
}
// 直接插入排序
printf("直接插入排序前的顺序表:");
for (i = 1; i <= L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
InsertSort(&L);
printf("直接插入排序后的顺序表:");
for (i = 1; i <= L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
// 冒泡排序
printf("冒泡排序前的顺序表:");
for (i = 1; i <= L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
BubbleSort(&L);
printf("冒泡排序后的顺序表:");
for (i = 1; i <= L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
return 0;
}
```
这份代码实现了顺序表的创建、直接插入排序和冒泡排序,您可以根据自己的需求进行修改。不过需要注意的是,这份代码只是示例,可能存在一些小错误,您在使用时需要进行检查和修改。
阅读全文