for循环运行了多少次?

时间:2014-02-02 12:46:57

标签: analysis pseudocode

for循环运行了多少次?

 done <- false 
 n <- 0   
 while (n < a-1) and (done = false) 
   done <- true
   for m <- a downto n
      if list[m] < list[m - 1] then 
        tmp <- list[m] 
        list[m] <- list[m-1] 
        list[m - 1] <- tmp
        done <- false 
 n <- n + 1 
return list

在最坏的情况下,答案(n ^ 2 + n)/ 2是否正确? while循环是否运行n + 1次?

1 个答案:

答案 0 :(得分:0)

如果downto包含n的值,则:

  • 在最坏的情况下,它将运行((a + 1)+ a +(a-1)+(a-2)+ ... + 1)次。这等于((a + 1)*(a + 2))/ 2。

如果downto不包含n的值,则:

  • 在最坏的情况下,它将运行(a +(a-1)+(a-2)+ ... + 1)次。这等于(a *(a + 1))/ 2。

在这两种情况下,while循环都会运行一次。