2014-02-08 45 views
0
import java.util.*; 

public class Zhangbubble 
{ 
    public static void main (String[] args) 
    { 
     int Bub[] = new int[6]; 
     Random randy = new Random(); 
     boolean Done = false; 
     for (int x=0; x<6; x++) 
     { 
      Bub[x] = randy.nextInt(100); 
      System.out.println (Bub[x]); 
     } 
     System.out.println ("This is the original array"); 
     while (! Done) 
     { 
      Done = true; 
      for(int x = 0; x < Bub.length - 1; x++) 
      { 
       for(int j = x + 1; j < Bub.length; j++) 
       { 
        if(Bub[x] >Bub[j]) 
        { 
         int temp = Bub[x]; 
         Bub[x] = Bub[j]; 
         Bub[j] = temp; 

        } 
       } 

      } 
      for(int x = 0; x < Bub.length; x++) 
      { 
       System.out.println(Bub[x]); 
      } 
     } 

    } 
} 

所以我的Bubble排序工作得很好。至少我認爲它的確如此。但我希望看到每個交換,我不知道如何編碼。因此,不是隻打印出原始數字和有序數字,有沒有辦法看到它們之間的所有數字順序?因此,在查看最終有序順序之前的數字順序之後,我發現數字並未切換他們想要的方式。它不需要前兩個數字,如果需要的話交換它們,然後移動第二對數字。相反,它似乎跳了起來,但仍然給出了正確的有序對。有人能夠弄清楚是什麼原因造成的?如何在泡泡分類中看到每個交換(我想明白了!)

+1

只需附加調試器並監視變量/數組。要「打印」中間的「交換狀態」,您需要在實際的排序循環內(即交換髮生處)打印*。 (int xe = 0; xe <6; xe ++) – user2864740

+0

好吧,我添加了。 } – Sarah

+0

但它給了我一個很長的水平鏈中的數字,有沒有辦法解決這個問題? – Sarah

回答

0

或者類似的東西......?

if(Bub[x] >Bub[j]) 
{ 
    System.out.println("Swapping value "+Bub[x]+" at index "+x); 
    System.out.println(" with value "+Bub[j]+" at index "+j); 
    ... 
} 
0

你可以做您的打印這樣:

System.out.print("["); 
for(int xe = 0; xe<6; xe++) { System.out.print(Bub[xe]+" "); 
System.out.println("]"); 

但我還是建議你使用調試器來做到這一點。然後,您可以逐行查看代碼中所有變量的更改。