2013-12-10 45 views
1
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

你的問題是什麼? – Kyle

+0

我編輯了我的問題。 :d – mackenn22

回答

0

我相信你問的是如何打印出你的排序數組的值。那是對的嗎?

如果是這樣,有幾種方法可以做到這一點。

當前,您的System.out.println(values);代碼默認爲toString方法Object,這就是爲什麼您會看到類似於此的原因:[[email protected]作爲輸出。

打印數組的快速簡便的方法是使用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 

這是否解決你的問題?