在 shell 排序中,3h+1
建议使用插入排序对列表进行 h 排序
//1, 4, 13, 40, ...
计算起始值的最佳公式h
是 的三分之一listsize
,如下所示,
int h = 1;
while(h < listSize/3){ // why N/3?
h = 3*h + 1
}
while(h >= 1){
//h-sort the array
// perform insertionSort
h = h/3;
}
问题:
要执行 shell 排序,如何在数学上证明h
(at max) 应该小于listSize/3
?