其实,感觉好像增量不同的冒泡,希尔排序概念以后补上。
#include <bits/stdc++.h>
using namespace std;
int a[10005];
int b[10005];
void shsort(int dk, int n, int a[])
{
for(int i = dk; i < n; i ++)
{
for(int j = i - dk; j >= 0; j -= dk)
{
if(a[j] > a[j + dk])
{
int t = a[j];
a[j] = a[j + dk];
a[j + dk] = t;
}
}
}
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
for(int i = 0; i < n; i ++)
{
scanf("%d",&a[i]);
b[i] = a[i];
}
shsort(n/2,n,a);
shsort(1,n,b);
for(int i = 0; i < n; i ++)
{
printf(i == n - 1 ?"%d
":"%d ",a[i]);
}
for(int i = 0; i < n; i ++)
{
printf(i == n - 1 ?"%d
":"%d ",b[i]);
}
}
return 0;
}