Проблема с пониманием алгоритма сортировки
Я написал сортировку динамического массива по убыванию количества отрицательных элементов в нём, но не понимаю, почему во вложенном цикле по j мы отнимаем от n переменную i. Написал комментарий в строке, не уверен, правильно ли это. Объясните, пожалуйста.
P.S в данном случае n - кол-во столбцов, динамический массив заполнен выше, прикреплять его не вижу смысла, поскольку вопрос именно теоретический. Спасибо!
void Arr_sort() {
double* key = new double[n];
int counter = 0;
for (int j = 0; j < n; j++)
{
for (int i = 0; i < m; i++)
{
if (arr[i][j] < 0)
{
counter++;
}
}
key[j] = counter;
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++) //Вот эта строка. Я подумал, что мы вычитаем из кол-ва столбцов те, что уже прошли
{
if (key[j] < key[j + 1])
{
swap(key[j], key[j + 1]);