Вопрос о времени выполнения цикла for

Я начал читать книгу «Введение в алгоритмы, третье издание» и столкнулся с чем-то, что для меня недостаточно ясно, об алгоритме «сортировки вставками».

Сначала посмотрите на картинку:

Нажмите здесь

Во-первых, автор определил n = A.length. A.length — длина массива A.

Итак, допустим, длина массива "A" равна 5. Если я запускаю цикл for от j = 2 (как на картинке) до A.Length = 5, я бы сказал, что первый строка будет выполняться 4 раза, то есть она будет выполняться n - 1 раз для любого n. С другой стороны, автор пишет, что первая строка будет выполняться n раз.

Что мне не хватает?


person OneWhoAsksSomeQuestions    schedule 06.02.2020    source источник


Ответы (2)


Первая строка, вероятно, относится к количеству проверок условия. Если ваш цикл выполняется n-1 раз, условие на итераторе проверяется n раза (в том числе в конце, когда оно становится ложным). Как и ожидалось, внутри тела цикла все операторы помечены знаком n-1.

person GoodDeeds    schedule 06.02.2020
comment
Вы чемпион. - person OneWhoAsksSomeQuestions; 08.02.2020
comment
@OneWhoAsksSomeQuestions Если это удовлетворительно отвечает на ваш вопрос, рассмотрите возможность принятия ответа. - person GoodDeeds; 11.02.2020

Это n может выражать временную сложность -> O (n ^ 2) внешнего цикла for, который имеет сортировка вставками, а не его фактическое количество циклов.

person Michael Holley    schedule 06.02.2020