/* 类C语言实现直接插入排序 */
#include<stdio.h>
#define MaxSize 20 //顺序表最大长度
typedef int KeyType; //typedef定义关键字类型为(int)
typedef int InfoType;
typedef struct
{
KeyType key; //关键字项
InfoType otherinfo; //其他数据项
}RedType;
typedef struct
{
RedType r[MaxSize + 1]; //r[0]闲置或做哨兵单元
int length; //顺序表的长度
}SqList; //顺序表类型
void InsertSort(SqList &L) //对顺序表L做直接插入排序
{
int i, j;
for (i = 2;i <= L.length;i++)
if (L.r[i].key<L.r[i - 1].key) //"<",需将r[i]存入有序字表
{
L.r[0] = L.r[i]; //将待插入的记录暂存到监视哨中
L.r[i] = L.r[i - 1]; //r[i-1]后移
for (j = i - 2;L.r[0].key<L.r[j].key;--j) //从后向前寻找插入位置
L.r[j + 1] = L.r[j]; //记录逐个后移,直到找到插入位置
L.r[j +