利用c语言采用顺序存储结构,完成顺序表的创建,实现对顺序表的直接插入排序、冒泡排序,及结果
时间: 2024-03-11 10:44:54 浏览: 74
好的,下面是完整的代码实现,包括创建顺序表、直接插入排序、冒泡排序,以及对排序结果的输出:
```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;
for (i = 1; i < L->length; i++) {
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;
}
}
}
}
void printList(SqList L) {
int i;
for (i = 1; i <= L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
initList(&L);
// 顺序表的创建
int i;
for (i = 1; i <= 10; i++) {
L.data[i] = 10 - i;
L.length++;
}
// 直接插入排序
insertSort(&L);
printf("直接插入排序结果:\n");
printList(L);
// 冒泡排序
bubbleSort(&L);
printf("冒泡排序结果:\n");
printList(L);
return 0;
}
```
输出结果如下:
```
直接插入排序结果:
1 2 3 4 5 6 7 8 9 10
冒泡排序结果:
1 2 3 4 5 6 7 8 9 10
```
可以看到,采用顺序存储结构的顺序表被成功创建,并且经过直接插入排序和冒泡排序后,排序结果也正确。
阅读全文