2019-gate-computer-science-and-it-practice.pdf/Q17-alg1 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) (Новая страница: « == Вопрос: Q17-alg1-31d68c == <blockquote> Вопрос из «Algorithms Test 1» где-то со страницы 222. Тут вставьте пер…») |
StasFomin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | |||
== Вопрос: Q17-alg1-31d68c == | == Вопрос: Q17-alg1-31d68c == | ||
+ | Рассмотрим следующий код: | ||
− | < | + | <code-cpp> |
− | + | y = y + z; | |
+ | for (i = 1; i < = n; i++) | ||
+ | k = k + 2; | ||
+ | for (i = 1; i < = n; i++) | ||
+ | { | ||
+ | for(j = 1; j < = n; j++) | ||
+ | x = x + 1; | ||
+ | } | ||
+ | </code-cpp> | ||
− | + | Какая сложность по времени для данного кода является правильной? | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== Ответы === | === Ответы === | ||
− | < | + | * <m>O(n^3)</m> |
− | ( | + | * Правильный ответ: <m>O(n^2)</m> |
− | + | * <m>O(n \log n)</m> | |
− | * Правильный ответ: | + | * <m>O(n^2 \log n)</m> |
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | |
− | + | ||
− | + | ||
− | + | ||
=== Объяснение === | === Объяснение === | ||
− | |||
− | |||
− | |||
− | |||
− | + | <code-cpp> | |
− | + | y = y + z; // константное время | |
− | + | for (i = 1; i < = n; i++) k = k + 2; //исполняется ''n + 1'' раз | |
+ | for (i = 1; i < = n; i++) //внешний цикл исполняется ''n + 1'' раз | ||
+ | { | ||
+ | for(j = 1; j < = n; j++) x = x + 1; //внутренний цикл исполняется ''n(n + 1)'' раз | ||
+ | } | ||
+ | </code-cpp> | ||
− | </ | + | Суммарное время: <m>C_0 + C_1n + C_2n^2 = O(n^2)</m> |
− | {{ | + | {{cstest-source|2019-gate-computer-science-and-it-practice.pdf|223|17}} |
− | { | + | {{question-ok|[[Участник:StasFomin|StasFomin]] 23:43, 24 декабря 2024 (UTC)}} |
− | [[ | + | [[Категория:Понимание кода]] |
+ | [[Категория:Анализ временной сложности]] |
Текущая версия на 23:43, 24 декабря 2024
Вопрос: Q17-alg1-31d68c
Рассмотрим следующий код:
y = y + z; for (i = 1; i < = n; i++) k = k + 2; for (i = 1; i < = n; i++) { for(j = 1; j < = n; j++) x = x + 1; }
Какая сложность по времени для данного кода является правильной?
Ответы
- Правильный ответ:
Объяснение
y = y + z; // константное время for (i = 1; i < = n; i++) k = k + 2; //исполняется ''n + 1'' раз for (i = 1; i < = n; i++) //внешний цикл исполняется ''n + 1'' раз { for(j = 1; j < = n; j++) x = x + 1; //внутренний цикл исполняется ''n(n + 1)'' раз }
Суммарное время:
Исходники — вопрос 17 на 223 странице книги «2019-gate-computer-science-and-it-practice.pdf»