У меня возникли проблемы с работой моего кода. Предполагается, что пользователю будет предложено определить размер массива, а затем указать систему счисления и использовать ее для сортировки массива. Когда я пытаюсь отобразить отсортированный массив, чтобы убедиться, что он отсортирован, появляется «[]». Ниже приведен мой код.
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;
}
}
У меня возникли проблемы с работой моего кода. Предполагается, что пользователю будет предложено определить размер массива, а затем указать систему счисления и использовать ее для сортировки массива. Когда я пытаюсь отобразить отсортированный массив, чтобы убедиться, что он отсортирован, появляется «[]». Ниже приведен мой код.
[code] 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);
/** * 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; } }[/code]