Привет, сообщество Stack Overflow, поэтому я все еще новичок в Java, но я пытаюсь научиться сортировать. Прямо сейчас моя программа создает n количество случайных чисел из диапазона от 1 до 10. Хотя я хотел бы поместить эти числа в массив, который нужно отсортировать, я не уверен. Должен ли я использовать сортировку пузырьков вместо массивов.
Здесь мой код
public static final void main(String aArgs){
//User inputs a number for the amount of random numbers to generate
String UserNumbers = JOptionPane.showInputDialog("How many numbers would you like to generate?");
//The unknown amount of numbers "n" is converted from the "UserNumbers" String to an int
int n = Integer.parseInt(UserNumbers);
//Random number generator generating the amount of numbers as defined by the user
Random randomGenerator = new Random();
for (int idx = 1; idx <= n; ++idx){
int randomInts = randomGenerator.nextInt(10);
//Now to create an array for the random numbers to be put into so they can be sorted
int ArrayToSort[] = new int[n];
ArrayToSort[0] = randomInts;
Arrays.sort(ArrayToSort);
System.out.println(ArrayToSort);
}
}
}
Я подозреваю, что вы не спрашиваете, следует ли использовать сортировку пузырьков, потому что она быстрее/медленнее, чем Arrays.sort, но вместо этого, поскольку Arrays.sort не работает для вас.
Я думаю, это связано с тем, что вы не помещаете случайные числа, которые вы сгенерировали в массив, который вы сортируете
Вместо этого попробуйте этот код:
public static final void main(String args){
//User inputs a number for the amount of random numbers to generate
String userNumbers = JOptionPane.showInputDialog("How many numbers would you like to generate?");
//The unknown amount of numbers "n" is converted from the "userNumbers" String to an int
int n = Integer.parseInt(userNumbers);
//Random number generator generating the amount of numbers as defined by the user
int arrayToSort[] = new int[n];
Random randomGenerator = new Random();
for (int idx = 0; idx < n; ++idx){
arrayToSort[idx] = randomGenerator.nextInt(10);
}
Arrays.sort(arrayToSort);
System.out.println(arrayToSort);
}
Проблема с вашим кодом заключается в том, что вы пытаетесь заполнить массив размером n случайными числами, отсортировать его и затем распечатать, но ваш код генерирует на каждой итерации случайное число, выделяет массив размера n, помещает случайное число в слот 0 массива и отсортировать его, и напечатать его (doint this n раз) - который не получит такого же эффекта от курса
BTW, Random.nextInt(10) возвращают случайное число от 0 до 9, а не 1 и 10. для достижения того, что вы хотите, вам нужно добавить 1 к этому случайному значению
Метод сортировки Arrays.java использует quicksort для массивов примитивов и сортировки слияний для массивов объектов. Я считаю, что большая часть времени быстрой сортировки быстрее, чем сортировка слияния, и стоит меньше памяти.
Источник: Почему метод Arrays.sort Java использует два разных алгоритма сортировки для разных типов?
.sort()
?