2014-03-03 69 views
0

如何逐步计算Shell排序算法的运行时间?如何计算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 
+0

你能提供** l **和** r **的样本值吗? –

回答

1

维基百科有一个约束O(N EXP(开方(8日志(5/2)的log(n)))的,并且引导用户通过Incerpi和塞奇威克的论文。我建议你看那里;在许多shellort变体的运行时间上获得好的界限是非常平凡的,可能包括,这个。