内部排序直接插入排序问题解决不了,那里错了啊
#include<stdio.h>#include<malloc.h>
#include<stdlib.h>
#define MASIZE 7
#define lENGTH 7
typedef int KeyType;
typedef struct
{
KeyType key;
// InfoType otherinfo;
}RedType;
typedef struct
{
RedType r[MASIZE+1];
int length;
}SqList;
void IntiList(SqList *L)
{
L->length=lENGTH;
printf("please input numbers:\n");
for(int i=1;i<=L->length;i++)
{
scanf("%d",&L->r[i]);
}
}
void ListTravese(SqList *L)
{
printf("the result is :\n");
for( int i=1;i<=L->length;i++)
printf("%d ",L->r[i]);
}
// 对顺序表L做直接插入排序
void InsertSort(SqList *L)
{
int i,j;
for(i=2;i<=L->length;++i)
{
if(L->r[i]->key<L->r[i-1]->key) //"<",需将L.r[i]插入有序子表
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];//插入到正确位置
}
}
int main()
{
SqList L;
IntiList(&L);
ListTravese(&L);
InsertSort(&L);//直接插入排序
//printf("the length:%d")
return 0;
}