C语言利用直接插入排序算法,将顺序表{3,6,2,10,1,20,88,8,5,7,4,9}中的元素从小到大进行排序
时间: 2023-10-26 18:24:18 浏览: 36
好的,下面是C语言利用直接插入排序算法,将顺序表{3,6,2,10,1,20,88,8,5,7,4,9}中的元素从小到大进行排序的完整代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int r[MAXSIZE + 1]; // 用于存储顺序表中的元素,r[0]用作哨兵或临时变量
int length; // 顺序表的长度
} SqList;
void InsertSort(SqList *L)
{
int i, j;
for (i = 2; i <= L->length; i++) // 从第二个元素开始插入
{
if (L->r[i] < L->r[i - 1]) // 如果当前元素小于前一个元素
{
L->r[0] = L->r[i]; // 设置哨兵
for (j = i - 1; L->r[j] > L->r[0]; j--) // 从后往前查找插入位置
{
L->r[j + 1] = L->r[j]; // 后移元素
}
L->r[j + 1] = L->r[0]; // 插入当前元素
}
}
}
int main()
{
SqList L = {{0, 3, 6, 2, 10, 1, 20, 88, 8, 5, 7, 4, 9}, 12};
int i;
printf("排序前:");
for (i = 1; i <= L.length; i++)
{
printf("%d ", L.r[i]);
}
printf("\n");
InsertSort(&L);
printf("排序后:");
for (i = 1; i <= L.length; i++)
{
printf("%d ", L.r[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
排序前:3 6 2 10 1 20 88 8 5 7 4 9
排序后:1 2 3 4 5 6 7 8 9 10 20 88
```