平均时间复杂度: O(n1.3)
最好情况: O(n)
最坏的情况: O(n2)
空间复杂度: O(1)
排序方式: 内排序
稳定性: 不稳定
原理
将数组以数组长度二分之一为间隔进行分组,并且组内插入排序,再以间隔的二分之一为间隔分组,直到间隔为1。
代码实现
int shell_sort(int *data,int length)
{
int gap =0;
int i=0,j=0;
for(gap=length/2;gap>=1;gap/=2)
{
for(i=gap;i<length;i++)
{
int temp =data[i];
for (j= i -gap; j >=0 &&temp<data[j]; j=j-gap)
{
data[j+gap]=data[j];
}
data[j+gap]=temp;
}
}
return 0;
}