Я читаю Cracking the 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);
}
}
В основном функция принимает в массиве, запускает for
петли для длины массива и для цикла length-1
. Я положил 10, я получил 55 назад.
O (N^2) и O ((N^2)/2) - одно и то же. – user2357112
Если вы не уверены, что вы правы, проведите простой эксперимент. Начните графику количества операций, выполняемых для разных входных значений, выбрав несколько различных входных значений и посмотрите, как начнет выглядеть график. – Servy
Мне не имеет смысла «вычислять большой-O» функции, которая просто выводит данные. Вам нужно будет пройти через все точки данных, чтобы их можно было выводить ... какая цель это служит? Вы не можете сделать это намного быстрее. –