Давайте разберем, как работает алгоритм сортировки вставками (insertion sort) на вашем примере и выясним, на какой итерации внешнего цикла он достигнет нужного результата для данного списка чисел.
Алгоритм сортировки вставками
Сортировка вставками организована следующим образом:
- Мы начинаем с первого элемента, предполагая, что он уже отсортирован.
- Затем берем следующий элемент и вставляем его на правильную позицию относительно уже отсортированных элементов.
- Продолжаем этот процесс, пока не пройдем весь список.
Пример
Заданный список:
1, 8, -79, -68, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3
Шаги алгоритма:
Начнем с элементом
1. Это наш первый отсортированный элемент.[1], 8, -79, -68, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3Вставляем
8. Он больше1, остается на месте.[1, 8], -79, -68, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3Берем
-79: это меньше, чем1, ставим его на первое место.[-79, 1, 8], -68, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3Далее
-68: помещаем между-79и1.[-79, -68, 1, 8], -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3Вставляем
-128: он становится первым элементом.[-128, -79, -68, 1, 8], -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3Вставляем
-33: его место между-68и1.[-128, -79, -68, -33, 1, 8], 26, -30, -57, -99, 19, -80, -97, 11, 75, 326больше8, остается на месте.[-128, -79, -68, -33, 1, 8, 26], -30, -57, -99, 19, -80, -97, 11, 75, 3-30: вставляется перед1.[-128, -79, -68, -33, -30, 1, 8, 26], -57, -99, 19, -80, -97, 11, 75, 3-57: вставляется перед-33.[-128, -79, -68, -57, -33, 1, 8, 26], -99, 19, -80, -97, 11, 75, 3-99: становится первым элементом.
[-99, -128, -79, -68, -57, -33, 1, 8, 26], 19, -80, -97, 11, 75, 3
19: вставляется после8.
[-99, -128, -79, -68, -57, -33, 1, 8, 19, 26], -80, -97, 11, 75, 3
-80: вставляется перед-79.
[-99, -128, -80, -79, -68, -57, -33, 1, 8, 19, 26], -97, 11, 75, 3
-97: вставляется между-99и-128.
[-99, -128, -97, -80, -79, -68, -57, -33, 1, 8, 19, 26], 11, 75, 3
11: вставляется между8и19.
[-99, -128, -97, -80, -79, -68, -57, -33, 1, 8, 11, 19, 26], 75, 3
75: вставляется между26и-.
[-99, -128, -97, -80, -79, -68, -57, -33, 1, 8, 11, 19, 26, 75], 3
3: вставляется между1и8.
[-99, -128, -97, -80, -79, -68, -57, -33, 1, 3, 8, 11, 19, 26, 75]
Итоги
Итак, весь список отсортирован на 16 итерации внешнего цикла. Каждый элемент проходил путь для поиска своего места среди уже отсортированных элементов.
Таким образом, ответ: 16 итерация внешнего цикла приводит к получению отсортированного списка.