其实,感觉好像增量不同的冒泡,希尔排序概念以后补上。
补:希尔排序主要是根据增量的不同来进行排序,来做到先小后大。
代码语言:javascript复制#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 ) //前 dk 不用往前找
{
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 ?"%dn":"%d ",a[i]);
}
for(int i = 0; i < n; i )
{
printf(i == n - 1 ?"%dn":"%d ",b[i]);
}
}
return 0;
}