直接插入排序算法
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20//顺序表长度
typedef int KeyType;
typedef struct
{
KeyType Key;
}RcdType;
typedef struct
{
RcdType r[MAXSIZE+1];
int length;
}SqList;
void InitList(SqList &L)
{
int len;
printf("顺序表长度为:\t");
scanf("%d",&len);
L.length=len;
for(int i=1;i<=L.length;i++)
{
printf("第%d个元素为:\t",i);
scanf(" %d",&L.r[i].Key);
}
}
void InsertSort(SqList &L)
{ int j=0;
for(int i=2;i<=L.length;i++)
{
if(L.r[i].Key<L.r[i-1].Key)
{
L.r[0]=L.r[i];
for(j=i-1;L.r[0].Key<L.r[j].Key;--j)
L.r[j+1]=L.r[j];
L.r[j+1]=L.r[0];
}
}
}
void ShowList(SqList L)
{
for(int i=1;i<=L.length;i++)
{
printf("%d\t",L.r[i].Key);
}
}
int main()
{
SqList L;
InitList(L);
InsertSort(L);
ShowList(L);
return 0;
}
运行结果: