#include<stdio.h>
void ShellSort(int a[],int n)
{
int i,j,temp;
int gap = n;
do
{
gap = gap/3+1; //将数组拆分为长度为gap的段
for(i = gap;i<n;i++)
{
if(a[i]<a[i-gap]) //找段内相对应的元素进行比较
{
temp = a[i]; //容器暂存
for(j=i-gap;a[j]>temp && j>=0;j-=gap) //注意防止下标越界
{
a[j+gap] = a[j]; //移动
}
a[j+gap] = temp; //插入
}
}
}while(gap>1);
}
int main(void){
int a[8] = {9,8,7,6,5,4,3,2};
ShellSort(a,8);
for(int i=0;i<8;i++){
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}