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

このループはn + 1回実行されるため、n + 1ステップとなり、初期化はi = 0となります。 これはほとんどのテキストブックで読んでいます。 私の質問は、ループが実行されるたびに、iをi + 1にインクリメントするステップがもう1つあります。これはi = i + 1であり、これも時間の複雑さを計算する際にカウントする必要があるステップの1つです。アルゴリズム分析の初心者は私にこの問題を助けます。forループのステップとしてインクリメントをインクリメントするかどうかを指定します。

答えて

3

は、我々は一般的に、このループは、n + 1回実行されますので、用のn + 1つのステップと言うこの[...]

いいえ、私たちはそれがN回の反復のために実行されますと言います。それは0の開始インデックスと< nと書かれた境界チェックを組み合わせる点です。カウンタがnに達すると、n回の繰り返し(0の場合は1、1の場合は1、2の場合は1、n - 1の場合は1、その後は終了)にループを終了します。

i++,i += 1またはi = compute_the_next_index(i)であるカウンタをインクリメントする作業は、「ステップ」としてカウントされません。ステップは反復、すなわちループの本体の実行である。

+0

私の質問は、これを一歩として数えない理由です。 私たちが私たちのメインにi = i + 1と書くと、それは1ステップとして数えられます。なぜここではそれをステップとしてカウントしないのですか? –

+0

「一歩」とはどういう意味ですか?そして、あなたはいつ「ステップを数えますか?プログラムテキストを記述するために頻繁に使用される「ステートメント」について話していますか? – unwind

関連する問題