#include<stdio.h>
void swap(int a[],int i,int j)
{
int t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
void shellsort(int a[],int low,int high,int p)//p為那個選擇的長度最后會變成1的那個
{
int i,n=0;
if(p==1)
{
for(i=low;i<high;i++)
if(a[i]>a[i+1])
{
n=1;
break;
}
if(n)
for(i=low;i<=high-p;i++)
{
if(a[i]>a[i+p])
swap(a,i,i+p);
}
return;
}
p/=2;
for(i=low;i<=high-p;i++)
{if(a[i]>a[i+p])
swap(a,i,i+p);
}
for(i=low;i<=high;i++)
shellsort(a,low,high,p);
return;
}
int main()
{
int i,j,a[20000],b,m,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
shellsort(a,0,n-1,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90219.html
標籤:基礎類
上一篇:'class Ui::Dialog' has no member named 'radiusLineEdit'
下一篇:DES差分攻擊
