Radix сортирует странные результаты - PullRequest
0 голосов
/ 25 января 2020

Так что я довольно новичок в программировании и работаю над обучением java. Я пытаюсь создать сортировку радиуса LSD, которая работает с отрицательными числами

У меня есть это:

   public static void radixSort(int[] input) { //not actually doing input array doing test array
        int[] a = {5, 11, -2, 17, 183};  //example array
        System.out.println("Unsorted " + Arrays.toString(a));
        int[] b = null;
        int d = 3; //Usually would be amountDigits(a[]). Simpilfying to remove possible mistakes. 
        for (int p = 0; p < d; p++) {
            int c[] = new int[1<<d];
            b = new int[a.length];
            for (int i = 0; i < a.length; i++)
                c[(a[i] >> d*p)&((1<<d)-1)]++;
            for (int i = 1; i < 1<<d; i++)
                c[i] += c[i-1];
            for (int i = a.length-1; i >= 0; i--)
                b[--c[(a[i] >> d*p)&((1<<d)-1)]] = a[i];
        }
        System.out.println("Sorted " + Arrays.toString(b));
    }

Это не работает, поскольку я получаю это:

Unsorted [5, 11, -2, 17, 183]
Sorted [5, 11, 17, 183, -2]

Какое это правильное решение? Что я делаю не так?

...