Покажите шаг, чтобы найти суммарные операции алгоритма - PullRequest
0 голосов
/ 09 сентября 2010

Ниже приведен некоторый Java-код для вопроса:

int total1 = 0;
int total2 = 0;
for (int x = 0; x <= n; x++)
    total1 = total1 + x;
for (int y = 1; y < n; y++)
    total2 += total1 * y;

На основании приведенного выше вопроса я делаю ответ, подобный приведенному ниже.Пожалуйста, помогите мне проверить мой ответ правильно или неправильно.Спасибо за вашу помощь.

Operation        Number of operations
-------------------------------------
Assignment       n² + 1
Addition         n²
Multiplication   n²
Total Operation  3n² + 1

Ответы [ 3 ]

4 голосов
/ 09 сентября 2010

Давайте начнем с этого: почему вы думаете, что n ^ 2 + 1 раз назначений?

0 голосов
/ 09 сентября 2010
int total1 = 0;

1 назначение

int total2 = 0;

1 назначение

for (int x = 0; x <= n; x++)

n + 2 сравнения

n + 1 дополнений

n + 2 задания

    total1 = total1 + x;

n + 1 дополнений

n + 1 назначений

for (int y = 1; y < n; y++)

n сравнений

n-1 дополнений

n назначений

    total2 += total1 * y;

n-1 умножений

n-1 назначений

Подведены итоги:

назначения: 1 + 1 + n + 2 + n + 1 + n + n-1 = 4n + 4

дополнения: n + 1 + n + 1 + n-1 = 3n + 2

умножений: n-1

сравнений: n + 2 + n = 2n + 2

Всего: 10n + 7 операций

При n> 1, как и при n = 0, некоторые термины ошибочны. Квадратичные члены в общем случае появляются только с вложенными циклами. Не забывайте для (...) частей. Инкремент - это добавление + присваивание - хотя некоторые архитектуры могут сделать это за один шаг. Здесь не учитываются прыжковые операции.

0 голосов
/ 09 сентября 2010

Нет, это не правильно.

Второй цикл идет от 1 до n-1, то есть n-1 итераций.

Что вы подразумеваете под операциями "n²"? Это n в квадрате?

...