有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中不使用内置排序方法动态排序用户输入

我正在尝试对一些由空格分隔的用户输入的整数进行排序

输入:4 2 1 5 9 --预期产出:1 2 4 5 9

在用户在循环中按enter键后,我不知道如何停止循环,其中我<;当我一个接一个地输入整数时,我的代码工作。任何帮助都将不胜感激

 class javasort {
    public static void main(String[] args) {
    int num, i, j, temp;
    Scanner input = new Scanner(System.in);

    // System.out.println("Enter the number of integers to sort:");
    // num = input.nextInt();

    num = 5; // <-- the user input should be dynamic

    int array[] = new int[num];

    System.out.println("Enter integers: ");

    for (i = 0; i < num; i++)

        array[i] = Integer.parseInt(input.next());
        num = i; // make array as big as input ?

    for (i = 0; i < (num - 1); i++) {
        for (j = 0; j < num - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }

    System.out.println("Sorted list of integers:");

    for (i = 0; i < num; i++)
        System.out.println(array[i]);
}}

共 (3) 个答案

  1. # 1 楼答案

    你的代码几乎是正确的,然后你删除了最好的提示。像这样使用Scanner.nextInt()

    num = input.nextInt();          // <  get the count.
    int array[] = new int[num];
    System.out.println("Enter integers: ");
    for (i = 0; i < num; i++) {     // <  don't rely on indentation for flow control.
        array[i] = input.nextInt(); // <  get a number "num" times.
    }
    
  2. # 2 楼答案

    您可以使用Bubble sort算法。它在最坏的情况下运行o(n^2)。不需要把代码放在这里,你可以做到。只需要不到20行

  3. # 3 楼答案

    如此简单,却又如此高效:

    Arrays.sort(array);