Как работает эта функция сортировки?

В рамках моей работы меня иногда вызывают для оценки кандидатов на должности программистов. Фрагмент кода недавно прошел через мой стол, и я сначала подумал, что я не уверен, что такой код даже компилирует больше. Но при компиляции он работает, и он тоже работает.

Кто-нибудь может объяснить, почему и как это работает? Задача состояла в том, чтобы предоставить функцию для сортировки пяти целочисленных значений.

void order5(arr) int *arr; {
    int i,*a,*b,*c,*d,*e;
    a=arr,b=arr+1,c=arr+2,d=arr+3,e=arr+4;
    L1: if(*a >*b){*a^=*b;*b^=*a;*a^=*b;}
    L2: if(*b >*c){*b^=*c;*c^=*b;*b^=*c;goto L1;}
    L3: if(*c >*d){*c^=*d;*d^=*c;*c^=*d;goto L2;}
        if(*d >*e){*d^=*e;*e^=*d;*d^=*e;goto L3;}
}

Теперь я вижу недостатки этого подхода (отсутствие удобочитаемости и ремонтопригодности для всех, кто родился после 1970 года), но может ли кто-нибудь подумать о каких-либо преимуществах ? Я не решаюсь сразу отказаться от этого, но, прежде чем мы решим, возвращать этого человека во 2 раунд, я Я хотел бы знать, есть ли в нем какие-либо полезные функции, помимо гарантии занятости для автора.

6
задан paxdiablo 3 November 2010 в 07:36
поделиться