Хотя ваш конкретный вопрос об обмене в 3
легко ответить, более общая его версия непростая, потому что выбор сортировки не стабильный.
Классический реализация будет выбрать 3
на третьем индексе, так как условие для выбора следующего элемента, чтобы своп
if (a[i] < a[iMin])
После первого 3
обменена в положение 0, второй 3
по индексу пять не будет выбирается.
Условие подразумевает, что самый ранний дубликат будет выбран в соответствии с расположением перед текущим проходом алгоритма. Однако эта схема может быть не такой, как первоначальная компоновка элементов.
Что касается дублирования в дальнейшем процессе выбора, то нет гарантии, потому что меньшее число может быть заменено впереди них.
К примеру, в этом начальном расположении
[3, 3, 1]
3
индексом ноль будет выбран в прошлом, так как первая итерация будет двигаться весь путь до конца массива.