Как я могу отсортировать количество случайно сгенерированных чисел, определенных пользователем в Java?

1

Привет, сообщество 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);
    }
}

}

  • 0
    Нет, Bubble Sort не эффективна
  • 0
    Arrays.sort, вероятно, самый эффективный метод сортировки. Все остальные виды будут менее эффективными и потребуют индивидуальной реализации. Почему вы не используете .sort() ?
Показать ещё 1 комментарий
Теги:
arrays
sorting
random

2 ответа

3

Я подозреваю, что вы не спрашиваете, следует ли использовать сортировку пузырьков, потому что она быстрее/медленнее, чем 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 к этому случайному значению

0

Метод сортировки Arrays.java использует quicksort для массивов примитивов и сортировки слияний для массивов объектов. Я считаю, что большая часть времени быстрой сортировки быстрее, чем сортировка слияния, и стоит меньше памяти.

Источник: Почему метод Arrays.sort Java использует два разных алгоритма сортировки для разных типов?

  • 0
    Быстрая сортировка - самый быстрый алгоритм, определенно быстрее, чем пузырьковая сортировка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню