有 Java 编程相关的问题?

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

java显示shell排序过程

public static void main(String[] args){
    numberSort();
}

public static void numberSort(){
    int quantity = 0;
    int allocate = 0;
    quantity = Integer.parseInt( 
               JOptionPane
                 .showInputDialog("How many values do you wish to sort? : "));

    int[] values = new int[quantity];

    for(int x = 0; x < values.length; x++){
        allocate = Integer.parseInt(
                          JOptionPane
                             .showInputDialog("Values you want to sort : "));
        values[x] = allocate;
    }

    int lenD = values.length;
    int inc = lenD/2;

    while(inc>0){
        for(int i=inc;i<lenD;i++){
            int tmp = values[i];
            int j = i;
            while(j>=inc && values[j-inc]>tmp){
                values[j] = values[j-inc];
                j = j-inc;
            }
        values[j] = tmp;
        }
        inc = (inc /2);
    }

    System.out.print(values);
}

我还有一个问题,这个代码与我的第一个问题有关。这都是关于贝壳的分类。我不知道我的循环是否正确,但我在如何打印一步一步的过程和排序的最终输出方面遇到了问题。谢谢

我的问题是如何打印shell排序的输出,并对所述排序进行可视化


共 (1) 个答案

  1. # 1 楼答案

    我相信您正在询问如何打印排序数组的值。对吗

    如果是这样,有几种方法可以做到这一点

    目前,您的System.out.println(values);代码默认为ObjecttoString方法,这就是为什么您会看到类似的内容:[I@6db22920作为输出

    打印数组的一种简单快捷的方法是使用Arrays.toString(values);代码。此调用将打印排序后的整数,如下所示:

    [2, 3, 4, 6, 8, 9, 11, 15, 19, 57]
    

    还可以使用for循环手动遍历数组,并逐个打印值。可以这样做:

    for(int currentInt : values) {
        System.out.println(currentInt);
    }
    

    上面的for循环代码将在单独的行上逐个打印值,如下所示:

    2
    3
    4
    6
    8
    9
    11
    15
    19
    57
    

    这能解决你的问题吗