私はCoding Interview(新しいCoding Interview)を読んでいます。プログラムが正しく動作しているようです。私がそれをチェックすると、N^2/2が答えと思われます。私は正しいとは思わない。 Big-Oが何で、なぜそうなのか誰かに教えてもらえますか?このプログラムのBig-OはO(N^2)ですか?
class Program
{
static void Main(string[] args)
{
int userNumber = Convert.ToInt32(Console.ReadLine());
int[] makeAnArray = new int[userNumber];
for (var x = 0; x < userNumber; x++)
{
makeAnArray[x] = x;
}
DisplayIterations(makeAnArray);
}
static void DisplayIterations(int[] testA)
{
int totalIterations = 0;
for (var i = 0; i < testA.Length; i++)
{
totalIterations++;
Console.WriteLine("i is " + i);
for (var j = i + 1; j < testA.Length; j++)
{
totalIterations++;
Console.WriteLine("j is " + j);
}
}
Console.WriteLine("The amount of iterations: " + totalIterations);
}
}
基本的機能は、アレイにかかるループlength-1
の配列の長さおよびAのfor
ループを実行します。私は10を入れて55を返します。
O(N^2)とO(N^2)/ 2)は同じものです。 – user2357112
あなたが正しいかどうかわからない場合は、簡単な実験を行います。さまざまな入力値に対して実行された操作の数をグラフ表示し、いくつかの異なる入力値を選択して、グラフがどのように見えるかを確認します。 – Servy
単純にデータを出力する関数の "big-Oを計算する"ことは私には意味がありません。あなたはそれらを出力するためにすべてのデータポイントを通過しなければならないでしょう...その目的は何を提供していますか?はるかに速くすることはできません。 –