Днес се хванах да ровя за имплементация решаваща проблема със завъртане на NxN матрица с 90°
Питах чичо Гошо, но намерих само два вида решения - чрез xor или чрез временна променлива.
Понеже знаем, че алгоритъма решаващ това 
In-place_matrix_transposition#Square_matrices е доста неприятен за кеша на процесорите, а и най-добрия случай е big O(n²).
Та се питах дали няма някакъв, така да се каже, логаритмичен начин за решаване на този проблем?
Ако сте запознати с някаква имплементация от рода на разделяне на проблема на две при всяка стъпка, моля да го споделите.
ПС: Намерих нещо елегантно, но все още се чудя дали няма нещо по-добро:
GeSHi (C):
    int tmp, l;
    for(int i = 0; i < M_SIZE/2; i++)
    {
        for(int j = i, k = M_SIZE - i - 1; j < k; j++)
        {
            tmp = m[i][j];
            l = M_SIZE - j - 1;
 
            m[i][j] = m[l][i];
            m[l][i] = m[k][l];
            m[k][l] = m[j][k];
            m[j][k] = tmp;
        }
    }