return 0;
}
//直接插入排序算法
#include
using namespace std;
#define MAXSIZE 20 //定义顺序表的最大长度
//定义顺序表的存储结构
typedef int KeyType; //定义关键字为整数类型typedef struct
{
KeyType key; //关键字项
} RedType; //记录类型
typedef struct
{
RedType r[MAXSIZE+1]; //r[0]用作哨兵单元
int length; //顺序表长度
} SqList; //顺序表类型
//函数原型声明
void InitiSeqList(SqList &L, int n); //初始化顺序表函数
void DisplayNoSort(SqList &L); //输出排序前的顺序表
bool LT(int a, int b); //关键字比较函数
void InsertSort(SqList &L); //插入排序函数
void DisplayInsertSort(SqList &L); //输出排序后的顺序表
//main函数
int main()
{
SqList seqlist;
InitiSeqList(seqlist,MAXSIZE);
DisplayNoSort(seqlist);
InsertSort(seqlist);
DisplayInsertSort(seqlist);
return 0;
}
//初始化顺序表函数,初始化为含n个元素的顺序表
void InitiSeqList(SqList &L, int n)
{
L.length=n; //顺序表长度
for(int i=1; i<=L.length; ++i)
{
L.r[i].key=rand()%90+10; //产生10到100之间的随机数}
}
//输出排序前的顺序表
void DisplayNoSort(SqList &L)
{
cout<<"插入排序前的顺序表:"<for(int i=1; i<=L.length; ++i)
{
cout<if(i%10==0)
cout<}
}
//关键字比较函数
bool LT(int a, int b)
{
return a
}
//插入排序函数
void InsertSort(SqList &L)
{
// 对顺序表L作直接插入排序
int i,j;
for (i=2; i<=L.length; ++i)
if (LT(L.r[i].key, L.r[i-1].key)) // "<"时,需将L.r[i]插入有序子表{
L.r[0] = L.r[i]; // 复制为哨兵
for (j=i-1; LT(L.r[0].key, L.r[j].key); --j)
L.r[j+1] = L.r[j]; // 记录后移
L.r[j+1] = L.r[0]; // 插入到正确位置
}
} // InsertSort
//输出经直接插入排序后的顺序表
void DisplayInsertSort(SqList &L)
{
cout<<"插入排序后的顺序表:"<for(int i=1; i<=L.length; ++i)
{
cout<if(i%10==0)
cout<}
}