编写函数实现直接插入排序。输入若干正整数,以0结束,采用直接插入排序将这些整数按照从大到小的顺序排序。
函数接口定义 :
void InsertSort(SqList &L);
其中 L
是待排序的关键字,采用顺序表存储。
裁判测试程序样例:
#include <iostream>
using namespace std;
#define MAXSIZE 20 //顺序表的最大长度
typedef int ElemType;
//顺序表的存储结构
typedef struct
{
ElemType *r;//存储空间的基地址
int length; //顺序表长度
}SqList;//顺序表类型
void InsertSort(SqList &L);
void Create_Sq(SqList &L)
{
int i,n;
cin>>n;
i=1;
while(n>0)
{
L.r[i]=n;
cin>>n;
i++;
}
L.length=i-1;
}
void show(SqList L)
{
int i;
for(i=1;i<=L.length;i++)
cout<<L.r[i]<<" ";
}
int main()
{
SqList L;
L.r=new ElemType[MAXSIZE+1];
L.length=0;
Create_Sq(L);
InsertSort(L);
show(L);
return 0;
}
/* 请在这里填写答案 */
输入样例:
5 9 1 3 0
输出样例:
9 5 3 1
void InsertSort(SqList &L)
{
for(int i=2;i<L.length+1;i++)
{
int j = i;
int temp = L.r[i];
while(j>1&&L.r[j-1]<temp)
{
L.r[j]=L.r[j-1];
j--;
}
L.r[j]=temp;
}
}