直接插入排序就是数组从1开始的元素进行排序,0号下标设置为哨兵位。
算法时间复杂度:O(n^2);
#include<iostream>
using namespace std;
typedef struct
{
int key;
}R;
typedef struct
{
int length;
R r[100];
}SqList;
void InsertSort(SqList &L);
int main()
{
int t;
while(cin>>t)
{
SqList L;
int i,j,k;
L.length=t;
for(i=1;i<=t;i++)
{
cin>>L.r[i].key;
}
InsertSort(L);
for(j=1;j<=t;j++)
cout<<L.r[j].key<<" ";
cout<<endl;
}
return 0;
}
void InsertSort(SqList &L)
{
int i,j,k;
for(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)//r[0].key为监视哨,防止访问越界
{
L.r[j+1]=L.r[j];
}
L.r[j+1]=L.r[0];
}
}
}