Radix Sort Base 16 (Hexadecimals)

Ich habe mehr als 10 Stunden gebraucht, um zu versuchen, die folgenden (hexadezimalen) Werte in der LSD-Radix-Sortierung zu sortieren, aber ohne Erfolg. Es gibt sehr wenig Material zu diesem Thema im Web.

0 4c7f cd80 41fc 782c 8b74 7eb1 9a03 aa01 73f1

Ich weiß, dass ich bitweise Operationen maskieren und ausführen muss, um jede hexadezimale Ziffer (4 Bits) zu verarbeiten, aber ich habe keine Ahnung, wie und wo.

Ich benutze den Code (ich verstehe) von GeeksforGeeks

void rsort(int a[], int n) {
    int max = getMax(a, n);
    for (int exp = 1; max / exp > 0; exp *= 10) {   
        ccsort(a, n, exp);
    }
}

int getMax(int a[], int n) {
    int max = a[0];
    int i = 0;
    for (i = 0; i < n; i++) {
        if (a[i] > max) {
            max = a[i];
        }
    }
    return max;
}

void ccsort(int a[], int n, int exp) {

    int count[n];
    int output[n];
    int i = 0;

    for (i = 0; i < n; i++) {
        count[i] = 0;
        output[i] = 0;
    }
    for (i = 0; i < n; i++) {
        ++count[(a[i] / exp) % 10];
    }
    for (i = 1; i <= n; i++) {
        count[i] += count[i - 1];
    }
    for (i = n - 1; i >= 0; i--) {
        output[count[(a[i] / exp) % 10] - 1] = a[i];
        --count[(a[i] / exp) % 10];
    }
    for (i = 0; i < n; i++) {
        a[i] = output[i];
    }
}

Ich habe auch alle StackOverFlow in dieser Angelegenheit überprüft, aber keiner von ihnen deckt die Details ab.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage