Разберём сортировку массива выбором. Для наглядности я использую картинки с человечками разного роста. Рост самого низкого человечка условно принимаю равным 1, самого высокого - 5.
Сначала выбираем опорный элемент. Этот элемент - самый первый элемент массива (с индексом 0). Сравниваем опорный элемент со всеми остальными справа от него. Если находим элемент меньше, чем он сам - меняем их местами. Таким образом, после сравнения опорного со всеми справа, самый маленький оказывается на первой позиции (с индексом 0). Этот элемент отсортирован! Теперь опорным становится уже второй элемент (с индексом 1) - так же сравниваем его со всеми элементами справа от него, если находим меньше, меняем местами. И так далее. Алгоритм заканчивает работу, когда достигаем позиции последнего элемента.
Итак, сначала у нас есть массив - группа человечков, которые стоят не по росту.
Выбираем опорный элемент - это самый первый элемент (index 0). Его будем сравнивать с остальными. Опорный элемент на картинке показан пунктиром.
На позиции опорного элемента у нас стоит человечек с ростом 4.
Сравниваем его со всеми элементами справа от него, находим самый маленький. Сначала меняем 4 и 2, потом 1 и 2, остальные остаются на своих местах, поскольку больше, чем найденный 1. После первого прохода вдоль строя человечков у нас на первой позиции оказывается отсортированный элемент - человечек с ростом 1.
Дальше, опорным элементом становится второй (index = 1). Сравниваем его со всеми элементами справа от него. Если находим меньше, меняем местами. В нашем случае самым маленьким оказался человечек с ростом 2.
Следующий проход по массиву - опорный элемент в позиции 3 (index = 2). Сравниваем опорный с ростом 4 со всеми справа. В нашем случае меняем его местами с человечком с ростом 3.
У нас уже отсортировано 3 элемента!
Последний проход по массиву. Опорный элемент теперь на позиции 4 (index = 3). Поскольку человечек с ростом 4 меньше человечка с ростом 5 - меняем их местами. Получаем отсортированный массив! Последний элемент не требует сортировки - он автоматически на своём месте.
Теперь посмотрите на реализацию алгоритма сортировки выбором на языке JavaScript.
Используем два цикла.
Внешний перебирает опорные элементы - base - от первого элемента - index = 0, до предпоследнего. Последний не нужно проверять - он автоматически становится на своё место.
Внутренний цикл перебирает элементы - el - начиная от элемента справа от опорного и до конца массива. Сравниваем элементы, если опорный больше, то меняем местами.
Надеюсь статья будет вам полезна!
Возможно вам будет интересно посмотреть сортировку вставками (Insert Sort) в картинках.