使用用户输入修改Bubblesort程序

时间:2017-10-17 21:22:28

标签: java arrays sorting

我之前使用 BubbleSort 方法创建了一个程序,该方法用于对已存在的列表中的数字进行排序,但是,我很难尝试操作此程序以便允许用户输入要排序的数字列表。到目前为止,我有:

import java.util.Scanner;

public class MedianValue {

public static void main(String[] args) {

    //use scanner to input list of numbers to sort

    Scanner scan = new Scanner(System.in);

    int[] numbers = new int[] {scan.nextInt()};


    //nested for loop
    //outer loop just iterating
        //inner loop going through and flipping
            //checking if out of order (if statement)


    int counter = 0;

    //outer loop: keep doing this until it's sorted

    for(int i = 0; i < numbers.length - 1; i = i + 1)

    //put in a inner loop number.length times minus one because we don't want to swap the last element

        for(counter = 0; counter < numbers.length - 1; counter = counter + 1)
        {



            if (numbers [counter] > numbers [counter + 1])
            {


                int temporary = numbers [counter];
                numbers [counter] = numbers [counter + 1];
                numbers [counter + 1] = temporary;
            }
        }


        for(int i =0; i < numbers.length; i = i + 1)
        {
            System.out.print(numbers[i] + " ");
        }
    }

}

但是,在该程序中,程序不是对输入的数字进行排序,而是简单地打印用户输入的第一个数字。我不确定是否需要移动放置扫描仪功能的位置,或者在循环内添加它以便按照我希望的方式对所有数字进行排序。如果是这样的话,我很遗憾在哪里改变计划。

2 个答案:

答案 0 :(得分:0)

代码int[] numbers = new int[] {scan.nextInt()};将始终创建大小为1的数组(而不是List)。

通常在这类作业中你会得到n + 1个数字,例如5 3 6 2 4 1就意味着“我要给你五个数字。哦,这里它们是:3 6 2 4和1! “

您可能想要int[] numbers = new int[scan.nextInt()];之类的内容 - 然后从0循环到numbers.length以填充数组。

答案 1 :(得分:0)

那是因为LayoutManager是一个单独的分配。扫描读取单个输入并分配给数字[0]。

您实际上需要修改int[] numbers = new int[] {scan.nextInt()};的代码才能阅读scan个数字并存储在n大小的n中。

等等。

numbers