void radixsort(unsigned long * const z1, unsigned int const N)
{
unsigned long L[2], i, m = 1;
unsigned long * const z2 = new unsigned long[N];
for (int licz = 0; licz < sizeof(unsigned long) * 4; ++licz)
{
L[0] = L[1] = 0;
for(i = 0; i < N; ++i) ++L[(z1[i] & m) > 0];
L[1] += L[0];
for(i = N; i > 0; --i) z2[(L[(z1[i - 1] & m) > 0]--) - 1] = z1[i - 1];
m <<= 1;
L[0] = L[1] = 0;
for(i = 0; i < N; ++i) ++L[(z2[i] & m) > 0];
L[1] += L[0];
for(i = N; i > 0; --i) z1[(L[(z2[i - 1] & m) > 0]--) - 1] = z2[i - 1];
m <<= 1;
}
delete [] z2;
}
Czy pomógłby mi ktoś i wytłumaczył co się w tym kodzie po kolei dzieje, bo ja siedzę nad tym i nic nie moge wymyślić. Z góry dzięki za pomoc.