Найти в Дзене

Insert Sort. Сортировка вставками. Доступно в картинках. Java Script

Попробую максимально доступно объяснить принцип сортировки массива вставками.
Для наглядности сортировать буду человечков по росту. Рост от 1 до 5. Вот начальное положение:
Неупорядоченный массив
Первый человечек - первый элемент массива считаем отсортированным - потому что сам с собой он отсортирован. :) Стоит одинокий самоотсортированный

Попробую максимально доступно объяснить принцип сортировки массива вставками.

Для наглядности сортировать буду человечков по росту. Рост от 1 до 5. Вот начальное положение:

Неупорядоченный массив
Неупорядоченный массив

Первый человечек - первый элемент массива считаем отсортированным - потому что сам с собой он отсортирован. :) Стоит одинокий самоотсортированный

Один элемент в массиве - уже отсортирован
Один элемент в массиве - уже отсортирован

К одинокому человечку пришёл друг. Сравниваем его рост с первым - если первый больше второго, то меняем их местами. Таким образом - мы вставляем второй элемент на место первого. У нас уже два элемента отсортированы.

Вставляем меньший элемент на место большего
Вставляем меньший элемент на место большего

Пришёл третий человечек - приятель первых двух. Берём его и сравниваем со вторым - если второй выше, меняем их местами. Теперь сравниваем рост первого и второго - если первый выше - меняем местами. Итак, два раза поменяв местами элементы, мы вставили третий на место первого. Третий продвинулся на место первого. Теперь у нас три элемента отсортированы.

Третий элемент вставили на своё место
Третий элемент вставили на своё место

Берём следующий - четвёртый элемент, сравниваем сначала с третьим, если третий больше, то меняем местами. Потом сравниваем третий со вторым, если второй больше - меняем местами, с первым, если первый больше, меняем местами. В нашем случае четвёртый человечек сразу оказался выше третьего, поэтому ничего не делаем. Четвёртый уже стоит на своём месте.

Четвёртый уже на своём месте
Четвёртый уже на своём месте

И так далее, тот же принцип. Берём следующий элемент и проводим его влево сквозь массив до того момента, как он упрётся в меньший элемент, чем он сам.

Сортировка вставками - последний элемент
Сортировка вставками - последний элемент

Реализация на Java Script:

-7

При реализации алгоритма на языке Java Script - использую два цикла.

Внешний - "перебирает" элементы начиная со второго. Слева направо. Нам ведь нужно сравнить все элементы.

И внутренний - "перебирает" элементы с индекса выбранного внешним (это top), "движется" по массиву влево.

Теперь немного подробнее:

top - позиция элемента с которым работаем. Начинаем с 1 - это индекс второго элемента массива. Начинаем с него, поскольку первый элемент с индексом 0 - уже отсортирован сам с собой.

-8

el - это индекс текущего элемента при сравнении

while - цикл в котором мы сравниваем значение предыдущего элемента с текущим. Если он больше, то меняем элементы местами.

Массив котов для улучшения настроения :)

Yandex картинки
Yandex картинки