//ShellSort
#include<stdio.h>
#include<stdlib.h>
int a[101];
int n;
void ShellInsert(int a[],int dk)
{
int temp,j;
for(int i=dk+1;i<=n;i++)
if(a[i]<a[i-dk])
{
temp = a[i];
for(j = i-dk;j>0&&a[j]>temp;j-=dk)
a[j+dk] = a[j];
a[j+dk] = temp;
}
}
int dks[10];
int dknum;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&dknum);
for(int i=1;i<=dknum;i++)
scanf("%d",&dks[i]);
for(int k=1;k<=dknum;k++)
ShellInsert(a,dks[k]);
/*/
10
4 7 2 3 1 8 9 10 5 6
3
5 3 1
/*/
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}
算法笔记4.希尔排序
最新推荐文章于 2024-05-03 16:24:47 发布