Не можете определить, правильно ли работает моя сортировка Radix в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Не можете определить, правильно ли работает моя сортировка Radix в Java?

Сообщение Anonymous »

У меня возникли проблемы с работой моего кода. Предполагается, что пользователю будет предложено определить размер массива, а затем указать систему счисления и использовать ее для сортировки массива. Когда я пытаюсь отобразить отсортированный массив, чтобы убедиться, что он отсортирован, появляется «[]». Ниже приведен мой код.
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Please enter the size of the array: ");

Scanner input1 = new Scanner(System.in);
int numBits = input1.nextInt();

Scanner input2 = new Scanner(System.in);
System.out.println("Please enter size of radix: ");
int radixNum = input2.nextInt();
getBits(radixNum);

ArrayList sortIt = new ArrayList();

radSort(sortIt, radixNum, numBits);
System.out.println(sortIt.toString());

}

private static int getBits(int radixNum) {
double lognum = Math.log(10000);
double logbase = Math.log(radixNum);
int numBits = (int) Math.floor((lognum / logbase) + 1);
System.out.println("Bits " + numBits);
return numBits;
}

/**
* Sorts the array in a radix sort where the radix is decided by the user
*
* @param sortIt
* @param radixNum
*/
private static ArrayList radSort(ArrayList sortIt, int radixNum, int numBits) {
ArrayList bucketStorage = new ArrayList();
ArrayList temp;
temp = sortIt;
int tempNumb;
for (int i = 0; i < radixNum; i++) {
ArrayList bucket = new ArrayList();
bucketStorage.add(bucket);
}
for (int j = 0; j < numBits; j++) {
while (!temp.isEmpty()) {
tempNumb = temp.remove(0);
bucketStorage.get(getBitNumber(tempNumb, j, radixNum)).add(tempNumb);
}
for (int m = 0; m < bucketStorage.size(); m++) {
for (int n = 0; n < bucketStorage.get(m).size(); n++) {
temp.add(bucketStorage.get(m).get(n));
}
bucketStorage.get(m).clear();
}
}
return temp;
}

private static int getBitNumber(int a, int b, int R) {
double expNum;
int entry;
expNum = Math.pow(R, b);
entry = (int) Math.floor(a / expNum) % R;
return entry;
}


Подробнее здесь: https://stackoverflow.com/questions/333 ... ly-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»