Вот код:Правильно ли этот худший случай?
int Outcome = 0;
for (int i = 0; i < N; i++)
for (int j = i+2; j = 0; j--)
Outcome += i*j;
Вот мой анализ. Поскольку первая строка является оператором присваивания, это занимает ровно одну единицу времени, O (1). Пробой для строки 2: 1 + N + N = 2N + 2. С линией 3, , поскольку содержимое цикла является одной операцией, цикл и его блок выполняют операции i + 1. Это также вложенный цикл. Наконец, строка 4 принимает ровно одну единицу времени для выполнения. Поэтому для обозначения этого большого числа обозначений обозначается O (N).
Звучит правильно для меня. Отличная работа! –
'x^2' является квадратичным .., который является многочленом на' x' порядка '2'. Вы можете сказать, что ваша сложность - это «O (i * j)» и «j = O (i)», поэтому у вас есть «O (n^2)» ..когда у вас есть вложенный цикл, обычно это «O (n^2) ':) – Bill
См. [эта зависимая сложность вложенного цикла] (http://cs.stackexchange.com/questions/4590/big-o-nested-for-loop-with-dependence) вопрос о CS. – user2246674