从clrs book计算算法的复杂性

时间:2012-08-24 15:15:52

标签: algorithm sorting

                                //Number of times 
for j=2 to A.length`          //n
    key = A[j]      //n-1
    i=j-1         //n-1
    while i>0 and A[i]>key    //summation of j from 2 to n of t(j) 
       A[i+1]= A[i]        //summation from j from 2 to n of t(j)-1
       i=i-1               //ditto
    A[i+1]=key   //n-1

我不明白为什么第一个中的时间是n而不是n-1?而且在总结中,为什么它来自于while循环中的t(j)vs t(j)-1。我知道它真的没关系,因为它们是常数,但它仍然让我感到困惑。谢谢!这是来自CLRS算法的教科书。插入排序。

1 个答案:

答案 0 :(得分:1)

对于for循环,例如:

for(int j = 2; j < 4; j++) {}

条件j < 4需要测试3次:当j = 2,j = 3,j = 4时。循环体只运行2次:当j = 2,j = 3时。最终的“假”条件算作额外的测试。