如何计算Shell排序算法的运行时间

时间:2014-03-03 17:10:06

标签: algorithm sorting time-complexity code-analysis shellsort

如何逐步计算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

1 个答案:

答案 0 :(得分:1)

维基百科有一个O的界限(N exp(sqrt(8 log(5/2)log(n)))并引导你到Incerpi和Sedgewick的一篇论文。我建议你看看那里;获得好的界限在许多shellort变体的运行时是非常重要的。包括,可能,这一个。