Использование JAVA Я пытаюсь сортировать и массивы целых чисел (по возрастанию) по методу radix, но, похоже, не работает ошибка.Невозможно выяснить, как исправить ошибку
public class Ex_radix {
public static void radixSort(int[] A) {
int d = 0;
for (int digit = 0; digit < A.length; digit++) {// Checks what is the
// maximum amount of
// digits in any number
int num = A[digit];
int counter = 0;
while (num != 0) {
num = num/10;
counter = counter + 1;
}
if (counter > d) {
d = counter;
}
}
System.out.println("this is the max number of digits: " + d);
int[] B = new int[A.length];// Copying the array
for (int j = 0; j < A.length; j++) {
B[j] = A[j];
System.out.println("this is cell " + j + ": " + B[j]);
}
int iteration = 1;//Starting sort
while (iteration <= d) {
for (int i = 1; i < B.length; i++) {
if (B[i] % (10^iteration) < B[i - 1] % (10^iteration)) {
int temp = A[i - 1];
B[i - 1] = B[i];
B[i] = temp;
}
}
for (int i = 0; i < B.length; i++) {// Checking
System.out.print(B[i] + ", ");
}
System.out.println();
iteration = iteration + 1;
}
}
public static void main(String[] args) {
int[] C = { 329, 457, 657, 839, 436, 720, 355 };
radixSort(C);
}
}
Если вы запустите его, вы увидите, что оно начинается нормально, но в течение первой итерации и последующие числа копируются. Я пробовал несколько методов, но coudlnt понять это.
первый iteratiom: 457, 657, 839, 436, 839, 355, 720, второй итерации: 457, 657, 436, 657, 355, 720, 720, третьей итерации: 657, 436, 657, 657 , 720, 720, 720,
'^' не является возвышением. Вы можете использовать 'Math.pow', но я бы сохранил еще одну переменную' powerOf10', которая содержит «10 для мощности _iteration_». Затем, когда вы добавляете 1 к 'итерации', я готов поспорить, вы можете догадаться, что делать с' powerOf10'. – ajb
правый. Я исправил это, глупо от меня. но он все еще не решает проблему. im все еще получая coppied числа. – orzys
У кого-нибудь есть идеи? – orzys