繁体   English   中英

计算插入排序的运行时间

[英]Calculating the running time of insertion sort

INSERTION_SORT (A)

FOR j ← 2 TO length[A]           //c1*n
    key ← A[j]                   //c2*(n-1)
    i ← j − 1                    //c3*(n-1)
    WHILE i > 0 and A[i] > key   //c4*sigma(j=2 to n)of(tj)
         A[i +1] ← A[i]          //c5*sigma(j=2 to n)of(tj-1)
         i ← i − 1               //c6*sigma(j=2 to n)of(tj-1)
    A[i + 1] ← key               //c7*(n-1)

c1,c2,c3,c7完全有意义。 没有道理的原因是:

c4*sigma(j=2 to n)of(tj) becomes c4*sigma(j=2 to n)of(j)

假设我们正在计算一个大小为5的数组的最坏情况。上一行在说,第4行的时间是:

c4*(1+2+3+4)

实际上是:

c4 *((1)+(1 + 2)+(1 + 2 + 3)+(1 + 2 + 3 + 4))

我想念什么? 我知道这本书一定是正确的。

编辑搞砸了,应该是:

 c4*((1)+(1+1)+(1+1+1)+(1+1+1+1))
=c4*(1+2+3+4)

但是第4行的时间 2 + 3 + 4 +5。第一次(j = 2),是2(i = 1和i = 0)。 第二次(j = 3),它是3(i = 2,i = 1,i = 0)...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM