思路:分割序列对子序列进行插入排序
代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[1000];
void xier()
{
int t;
for(int i=n/2;i>0;i/=2)
{
for(int j=i;j<n;j++)
{
t=a[j];
int k;
for( k=j-i;k>=0&&t<a[k];k-=i)
a[k+i]=a[k];
a[k+i]=t;
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
xier();
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}