Так что я довольно новичок в программировании и работаю над обучением 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]
Какое это правильное решение? Что я делаю не так?