#include<stdlib.h>
#include<stdio.h>
void ShellSort(int *data,int left,int right)
{
int len = right - left + 1;
int i;
int d = len;
while(d > 1)
{
d = (d + 1)/2;
for(i = left;i < right + 1;i++)
{
if(data[i + d]<data[i])
{
int temp = data[i + d];
data[i + d] = data[i];
data[i] = temp;
}
}
}
}
void ShellSort2(int *data,int len)
{
int d = len;
int i;
while(d > 1)
{
d = (d + 1)/2;
for(i = 0;i < len - d;i++)
{
if(data[i + d]<data[i])
{
int temp = data[i + d];
data[i + d] = data[i];
data[i] = temp;
}
}
}
for(i = 0;i<10;i++)
{
printf("%5d",data[i]);
printf("\n");
}
}
void main()
{
int list[10];
int n = 9,m = 0,i;
printf("input 10 number:");
for(i = 0;i<10;i++)
{
scanf("%d",&list[i]);
}
ShellSort2(list,10);
}
结果如下: