希尔排序------缩小增量排序
Shellsort适合处理中等规模的数组(几千个元素)
它没有quicksort那么快,因此不适合处理更大规模的数据
间隔序列中的数字互质,且最后的间隔一定要为1
基于实验的效率分析则有几种:分别介于 O(N3/2)至 O(N7/6)之间。
public void shellSort()
{
int inner, outer;
long temp;
int h = 1; // find initial value of h
while(h <= nElems/3)
h = h*3 + 1; // (1, 4, 13, 40, 121, ...)
while(h>0) // decreasing h, until h=1
{
// h-sort the file
for(outer=h; outer
h-1 && theArray[inner-h] >= temp)
{
theArray[inner] = theArray[inner-h];
inner -= h;
}
theArray[inner] = temp;
} // end for
h = (h-1) / 3; // decrease h
} // end while(h>0)
} // end shellSort()