2016-12-09 9 views
0

は、例えばアレイを含むn個の要素、および複数の条件でif文を含むコードの行があると仮定:ランタイム

for i = 2 to n 
    if A[i] > m and A[i] - A[1] = EVEN 
     then set m to A[i] 

はランタイムです2番目の行n-1の場合、またはif文の条件が2つあるので2 *(n-1)ですか?

答えて

2

一般的に言うと、ランタイムについて言えば、各操作にどれくらいの費用がかかるかを話すには、ある種の「コストモデル」が必要です。実際には、あなたがここに入る詳細レベルに入るコストモデルを見るのは珍しいことです。通常は、詳細を抽象化して、すべてのテストを実行するコストはO(1) (入力の大きさに依存しない一定の定数)を生成します。

レベルの正確さを数えようとしている場合は、配列のルックアップのコストや、短絡の有無、実行時の分岐予測や誤予測の影響、それは人々が実際にその詳細レベルで物事を実際に話すのを見ることがとても稀である理由を部分的に説明します。

+0

私は同意します:通常、条件は繰り返しごとにO(1)と言います。あなたが指摘していることに加えて、この特定のケースでは、第2の条件(すなわち、A [i] -A [1] = EVEN)の回数がチェックされる回数は、最初の条件の結果と、短絡評価。 –