Я не уверен, правильно ли я делаю эти проблемы, поэтому мне нужно, чтобы кто-то сказал мне, если я ошибаюсь.Найти сложность вычислений вложенных циклов
for (i = 0 ; i < n ; i ++)
Это n-0 = n назначение, и это O (g (n)) вправо?
Хорошо так что знаю, если я хочу, чтобы получить количество заданий и O (г (п)) в этих вопросах:
sum = 0;
for (i = 1 ; i < n * n ; j ++)
{
for (j = 1 ; j <= n; j ++)
{
sum += j;
}
}
что я сделал, сумма = 0 является одним присваивание и внешний контур равен п^2 - 1 задание и внутренний цикл N-1 задание и, наконец, сумма 1 назначение
Таким образом, количество назначений является 2+ (п^3 + 1), что дает O (g (n^3))
В этом вложенный цикл:
sum = 0;
for (i = 1 ; i <= n; i ++)
{
for (j = 1 ; j <= 100 ; j++)
{
for (k = 1 ; k <= n ; k ++)
{
sum += k;
}
}
}
Что я сделал, сумма = 0 равно 1 Назначение тогда первый цикл 1-н заданий второго цикл 99 последнего цикл 1-н , а затем сумма = 2
Так что я получил 3 + (1 + п^2) задания, которые дают мне O (г (п^2))
существует ничего плохого с тем, что я только что сделал?
Не то, чтобы я смотрел на него очень быстро, хотя трехслойная вложенная петля выглядит немного странно (зачем перебирать три петли и работать только с k?) – Rogue
Так что же случилось с тем, что я сделал? – rullzing
Я не знаю, почему «g» там. Я видел ссылки на O (f (n)) и O (g (n)), где «f» и «g» - функции от n. Но здесь такие вещи, как 'n^2' и' n^3' _are_ ваши функции. Поэтому, если «g» не имеет особого нового значения, которое было изобретено после окончания школы, я думаю, что это не принадлежит. Просто O (n^2) и O (n^3) - это то, что вы хотите. Помимо этого, вы сделали некоторые ошибки, подсчитывая количество заданий, но окончательные ответы O (...) кажутся правильными. – ajb