Отсортировать квадратный массив(4x4) по стрелке

Отсортировать квадратный массив(4x4) по стрелке (от меньшего к большему)

введите сюда описание изображения


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

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

Например, так — со вспомогательными функциями перевода линейного номера в индексы двумерного массива:

int I(int k)
{
    return k%3+2*((k/3)%2)*(1-k%3);
}

int J(int k)
{
    return k/3;
}

void sort(int M[4][4])
{
    for(int b = 0, e = 11; b != e; ++b)
        for(int k = e, j = k--; j != b; j = k--)
            if (M[I(j)][J(j)] < M[I(k)][J(k)])
            {
                int t = M[I(j)][J(j)];
                M[I(j)][J(j)] = M[I(k)][J(k)];
                M[I(k)][J(k)] = t;
            }
}

Полный код тут: https://ideone.com/hM45GK
Все, как заказано :)

→ Ссылка