用c语言,采用顺序存储结构,完成顺序表的创建,实现对顺序表的直接插入排序、冒泡排序。
时间: 2024-02-24 09:56:09 浏览: 85
好的,下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void initList(SqList *L)
{
L->length = 0;
}
void printList(SqList L)
{
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void insertSort(SqList *L)
{
int i, j, tmp;
for (i = 1; i < L->length; i++) {
tmp = L->data[i];
j = i - 1;
while (j >= 0 && L->data[j] > tmp) {
L->data[j+1] = L->data[j];
j--;
}
L->data[j+1] = tmp;
}
}
void bubbleSort(SqList *L)
{
int i, j, tmp, flag;
for (i = 0; i < L->length-1; i++) {
flag = 0;
for (j = 0; j < L->length-i-1; j++) {
if (L->data[j] > L->data[j+1]) {
tmp = L->data[j];
L->data[j] = L->data[j+1];
L->data[j+1] = tmp;
flag = 1;
}
}
if (flag == 0) {
break;
}
}
}
int main()
{
SqList L;
initList(&L);
L.data[0] = 5;
L.data[1] = 3;
L.data[2] = 8;
L.data[3] = 4;
L.data[4] = 2;
L.length = 5;
printf("排序前:");
printList(L);
insertSort(&L);
printf("直接插入排序后:");
printList(L);
bubbleSort(&L);
printf("冒泡排序后:");
printList(L);
return 0;
}
```
解释:
1. 定义了一个结构体 `SqList`,其中包含一个整型数组 `data` 和一个整型变量 `length`,表示该顺序表的数据和长度。
2. 定义了初始化顺序表的函数 `initList` 和打印顺序表的函数 `printList`。
3. 定义了直接插入排序的函数 `insertSort` 和冒泡排序的函数 `bubbleSort`,并在其中实现了排序算法。
4. 在 `main` 函数中初始化顺序表,然后分别调用直接插入排序和冒泡排序函数进行排序,并打印排序后的结果。
希望这个示例代码能够对你有所帮助!
阅读全文