#include <stdio.h>
void swap(int *x,int *y)
{
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}
void Shellsort(int a[],int n)
{
int gap;
int tmp;
int i,j;
for(gap=n/2; gap>0; gap/=2)
{
for(i=gap; i<n; i++)
{
tmp=a[i];
for(j=i-gap; j>=0 && a[j]>tmp; j-=gap)
{
a[j+gap]=a[j];
}
a[j+gap]=tmp;
}
}
}
void Shellsort1(int a[],int n)
{
int gap;
int i,j;
for(gap=n/2; gap>0; gap/=2)
{
for(i=gap; i<n; i++)
{
for(j=i-gap; j>=0 && a[j]>a[j+gap]; j-=gap)
swap(&a[j+gap],&a[j]);
}
}
}
void main()
{
int a[10]= {1,2,3,4,5,6,35,12,21,10};
int len;
int i;
len=sizeof(a)/sizeof(a[0]);
// Insertsort1(a,len);
Shellsort1(a,len);
printf("%d\n",len);
for(i = 0; i<len; i++)
printf("%d ",a[i]);
printf("\n");
}
引用:
http://blog.youkuaiyun.com/morewindows/article/details/6668714