Ниже приведен код для алгоритма radix с сайта www.sanfoundry.com. Я не понимаю третий цикл loop in while: почему int i нужно пересчитывать обратно и как этот цикл работает, чтобы отменить упорядоченные элементы до b []. И еще один вопрос: что, если мы будем считать число, основанное на 2, следуя аналогичному коду? И есть ли возможность изменить этот код для смешивания положительных и отрицательных чисел?Радиксиальный алгоритм Понимание в Java
public static void radixSort(int[] input){
final int N = input.length;
int exp = 1; int[] b = new int[N];
int max = input[0];
for(int i = 1; i < N; i++){
if(max <= input[i]) max = input[i];
}
while(max/exp > 0){
int[] bucket = new int[10];
for(int i = 0; i < N; i++) bucket[(input[i]/exp) % 10]++;
for(int i = 1; i < 10; i++) bucket[i] += bucket[i - 1];
for(int i = N - 1; i >= 0; i--) b[--bucket[(input[i]/exp) % 10]] = input[i];
for(int i = 0; i < N; i++) input[i] = b[i];
exp *= 10;
}
}