//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算法的教科书。插入排序。
答案 0 :(得分:1)
对于for循环,例如:
for(int j = 2; j < 4; j++) {}
条件j < 4
需要测试3次:当j = 2,j = 3,j = 4时。循环体只运行2次:当j = 2,j = 3时。最终的“假”条件算作额外的测试。