//希尔排序
#include <stdio.h>
void swap(int &a,int &b)
{
int t;
t=a;a=b;b=t;
}
void shell(int *a,int d,int n)
{
int i,j;
for(i=d-1;i<n;i++)
for(j=i+d;j>=i&&j<n;j--)
if(a[j]<a[j-d])
{
swap(a[j],a[j-d]);
}
}
void shellsort(int *a,int d,int n)
{
while(d>=1)
{
shell(a,d,n);
d/=2;
}
}
void main()
{
int a[]={5,2,4,7,1,3,2,9};
shellsort(a,4,8);
for(int i=0;i<8;i++)
printf("%d ",a[i]);
printf("\n");
}
#include <stdio.h>
void swap(int &a,int &b)
{
int t;
t=a;a=b;b=t;
}
void shell(int *a,int d,int n)
{
int i,j;
for(i=d-1;i<n;i++)
for(j=i+d;j>=i&&j<n;j--)
if(a[j]<a[j-d])
{
swap(a[j],a[j-d]);
}
}
void shellsort(int *a,int d,int n)
{
while(d>=1)
{
shell(a,d,n);
d/=2;
}
}
void main()
{
int a[]={5,2,4,7,1,3,2,9};
shellsort(a,4,8);
for(int i=0;i<8;i++)
printf("%d ",a[i]);
printf("\n");
}