给出n和n个整数,希望你从小到大给他们排序
第一行一个正整数n
第二行n个用空格隔开的整数
输出仅一行,从小到大输出n个用空格隔开的整数
3
3 1 2
1 2 3
1<=n<=100000
#include <iostream>
using namespace std;
int a[100000];
void shell(int n)
{
int i,j,k,x;
for(i=0;i<n;i++)
{
cin>>a[i];
}
k=n/2;
while(k>=1)
{
for(i=k;i<n;i++)
{
x=a[i];
j=i-k;
while(j>=0&&x<a[j])
{
a[j+k]=a[j];
j-=k;
}
a[j+k]=x;
}
k/=2;
}
}
int main()
{
int n,i;
cin>>n;
shell(n);
for(i=0;i<n;i++)
{
cout<<a[i];
if(i!=(n-1))
{
cout<<" ";
}
}
return 0;
}