2012-09-03 37 views
0

我一直在嘗試使用java中的簡單整數數組來實現Bubble Sort。但似乎有一些問題。現在我知道使用ArrayList將是最好的選擇,我也會這樣做。但是爲什麼它不能用簡單的整數數組排序。這裏是代碼BubbleSort使用整數數組

package sort; 

public class BubbleSort { 

    int array[]={1,5,3,32,54,6,87,5,1}; 
    int temp=0; 
public void enter(){ 
    for(int i=0;i<array.length;i++){ 
     for(int j=0;j<(array.length-i);j++){ 
      if(array[j]>=array[j+1]){ 


       temp=array[j]; 
       array[j]=array[j+1]; 
       array[j+1]=temp; 
       } 

     } 
    } 
} 
public void show(){ 

    for(int i:array){ 
    System.out.println(i); 
    } 
} 
public static void main(String str[]){ 

    new BubbleSort().Enter(); 
    new BubbleSort().Show(); 
} 
} 

它產生與輸入相同的數組。沒有什麼變化。簡單數組與ArrayList或Vector之間的區別就在於它們提供了數組大小的動態時間擴展。是否還有其他更多的功能?我的意思是,簡單的數組在每次被操縱時創建一個不同的實例,就像字符串一樣?它似乎在這裏這樣做。

+0

這是功課嗎? –

+3

請注意,Java中包名稱爲小寫,方法名稱爲camelCase。請參閱http://docstore.mik.ua/orelly/java-ent/jnut/ch07_01.htm。當Java開發人員讀取違反這些規則的代碼時,這令人驚訝地感到困惑。 –

+1

不,這不是功課。我正在使用eclipse這個特定的軟件包有所有的排序程序。我不知道如何重命名它。我知道它不是正確的慣例。下次我會記住這一點。謝謝你的幫助 –

回答

5

問題是您沒有爲您的BubbleSort類的實例分配一個名稱。

new BubbleSort().Enter(); 
new BubbleSort().Show(); 

您的代碼創建一個新的BubbleSort類,然後對其進行排序。然後它會創建另一個新的(並且完全獨立的)BubbleSort類,然後顯示該類 - 並且它尚未排序。

你想給一個名字您的變量,所以你可以對它進行排序,然後顯示它,就像這樣:

BubbleSort myBubbleSort = new BubbleSort(); 
myBubbleSort.Enter(); 
myBubbleSort.Show(); 

作爲一個側面說明(和SIB中的答案指出),你可能也想看看Java Naming Conventions。遵循這些約定使您的代碼對其他Java程序員更易讀,並且包括使用方法名稱的lowerCamelCase和類名稱的UpperCamelCase

+1

謝謝!我怎麼錯過了! –

+1

@KanwaljeetSingh不要忘記[標記本文爲答案](http://meta.stackexchange.com/a/5235/182862) –

5

因爲你是排序一個實例並顯示另一個實例。

new BubbleSort().Enter(); 
new BubbleSort().Show(); 

使用

BubbleSort bubbleSort = new BubbleSort(); 
bubbleSort.Enter(); 
bubbleSort.Show(); 

而且您應該重命名Enter()enter()Show()show(),至少可以說。

3

因爲您正在創建兩個不同的BubbleSort對象,請排序第一個對象並顯示不同的對象。

它應該是....

public static void main(String str[]){ 

    BubbleSort sort = new BubbleSort(); 
    sort.Enter(); 
    sort.Show(): 

} 
1

和正確的冒泡代碼:

int temp = 0; 
    for (int i = 0; i < array.length; i++) { 
     for (int j = 1; j < (array.length - i); j++) { 
      if (array[j - 1] > array[j]) { 
       temp = array[j - 1]; 
       array[j - 1] = array[j]; 
       array[j] = temp; 
      } 

     } 
    } 

我希望它可以幫助別人尋找它。