For循环的时间复杂度(n与n-1):插入排序循环次数疑问
关于插入排序循环执行次数的问题解答
第一个问题的答案是肯定的,这就是循环执行次数标注为n而非n-1的原因。
当for循环的j从2到A.length(即n)时,循环体实际会执行n-1次(j取2、3…n,共n-1个值)。但按照书中的统计逻辑,这里的“执行次数”指的是循环头的测试次数:每次进入循环前都会做一次测试,共n-1次成功进入循环;当j递增到n+1时,会再做一次测试,发现不满足循环条件,循环正常退出。所以总测试次数是(n-1)+1 = n次,正好符合“for或while循环正常退出时,循环头的测试次数比循环体多一次”的结论。第二个问题:如果j从1到A.length(n),循环头的测试次数确实是n+1次。
此时循环体执行n次(j取1到n),加上最后一次j=n+1时的退出测试,总测试次数就是n+1次,完全符合前面提到的规则。
内容的提问来源于stack exchange,提问作者JTruant
相关产品推荐
相关产品推荐

