使用Knuth序列进行Shell排序的时间复杂度?

时间:2013-01-04 22:34:10

标签: sorting time-complexity shellsort

你好我已经按照以下方式实现了这个算法,我想知道它的时间复杂度是什么,你能告诉我吗?

void shellsort(int items[],int n)   
{
    int j=1;
    int d = (pow(3.0,j)-1) / 2;


    while(d < ceil(n/3))
    {
        for(int i=d;i<n;i++)
            {
                item tmp = items[i];
                int k;
                for(k = i; k >= d && items[k-d] > tmp; k -= d)
                items[k]=items[k-d];
                items[k]=tmp;
            }
        j++;
        d = (pow(3.0,j)-1) / 2;
    }

}

1 个答案:

答案 0 :(得分:1)

使用Knuth增量序列进行shell排序的时间复杂度为O(n ^ 3/2)。

来源:http://www.stoimen.com/blog/2012/02/27/computer-algorithms-shell-sort/