Почему неверно сортирует массив?

Требуется отсортировать массив по возрастанию: если текущий элемент > минимального из оставшегося куска массива, поменять их местами и вывести индексы + 1 этих элементов. Все написал по логике, из-за чего на отладке такая беда?

#include <iostream>
using namespace std;
int main() {
    int n, i = 0, j, min, index;
    cin >> n;
    int* a = new int[n];
    for (; i < n;)
        cin >> a[i++];
    for (i = 0; i < n - 1; i++) {
        min = a[i + 1];
        index = i + 1;
        for (j = i + 1; j < n; j++)
            if (a[j] < min)
                min = a[j],
                index = j;

        if (a[i] > min)
            swap(min, a[i]),
            cout << "Swap elements at indices " << i + 1 << " and " << index + 1 << '.' << endl;
    }
    cout << "No more swaps needed." << endl;
}

Ответы (1 шт):

Автор решения: Bukashka

Заменить

swap(min, a[i])

на

 swap(a[index], a[i])
→ Ссылка