如何逐步计算Shell排序算法的运行时间?
shellsort(itemType a[], int l, int r){
int i, j, k, h;
itemType v;
int incs[16] = { 1391376, 463792, 198768, 86961, 33936,
13776, 4592, 1968, 861, 336,
112, 48, 21, 7, 3, 1 };
for (k = 0; k < 16; k++)
{
for (h = incs[k], i = l+h; i <= r; i++)
{
v = a[i]; j = i;
while (j >= h && a[j-h] > v)
{
a[j] = a[j-h];
j -= h;
}
a[j] = v;
}//end inner-for loop
}//end outer for-loop
}//end shellsort发布于 2014-03-03 17:18:25
Wikipedia有一个O(N (sqrt(8 log(5/2) log(N)的范围,并将您引向Incerpi和Sedgewick的一篇论文。我建议您看看那里;获得许多there类型变体运行时的良好界限是非常重要的。可能也包括这个。
https://stackoverflow.com/questions/22152876
复制相似问题