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 楼答案
我相信您正在询问如何打印排序数组的值。对吗
如果是这样,有几种方法可以做到这一点
目前,您的
System.out.println(values);
代码默认为Object
的toString
方法,这就是为什么您会看到类似的内容:[I@6db22920
作为输出打印数组的一种简单快捷的方法是使用
Arrays.toString(values);
代码。此调用将打印排序后的整数,如下所示:还可以使用for循环手动遍历数组,并逐个打印值。可以这样做:
上面的for循环代码将在单独的行上逐个打印值,如下所示:
这能解决你的问题吗