2012-01-12 79 views
0
for(int i=0;i<n;i++) 
{ 
    // Some code 
} 

我們通常說這個循環運行n + 1次,所以n + 1步爲此,並且有一步是初始化i = 0。 這個我已經閱讀過大部分教科書。 我的問題是這樣的,每次循環運行時,都有一個步驟將i遞增到i + 1即i = i + 1,這也是計算時間複雜度應該計算的步驟之一。算法分析的新手幫助我解決這個問題。作爲for循環中的一個步驟計數增量

回答

3

我們一般說,這個環路N + 1次運行,因此n + 1個步驟執行這一[...]

不,我們說,它運行ñ迭代。這就是將0的起始索引與< n的邊界檢查相結合的一點。一旦計數器達到n,在經過n迭代(一個用於0,一個用於1,一個用於2,...一個用於n-1,然後退出)之後,它將退出循環。

增加計數器所做的工作,無論它是i++,i += 1還是i = compute_the_next_index(i),都不算作「步驟」。這些步驟是迭代,即循環體的執行。

+0

我的問題是,這就是爲什麼我們不把它作爲一個步驟。 如果我們在我們的主文件中寫入i = i + 1,那麼我們將其計爲1步,那麼爲什麼我們不把它算作一步。 – 2012-01-12 09:22:54

+0

「一步」是什麼意思?你什麼時候「計數步驟」?您是否在談論「陳述」,這個術語經常用來描述程序文本? – unwind 2012-01-12 11:01:50