2017-01-14 173 views
0

我想在Java中使用冒泡排序算法對數組進行排序。但是當我運行代碼ArrayIndexOutofBoundException發生。這裏是我的代碼按冒泡排序數組排序

package bubblesort; 

public class BubbleSort { 

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

    public static void main(String[] args) { 

     BubbleSort ob = new BubbleSort(); 
     int[]nums={2,5,1,55}; 
     System.out.println("Sorted list is:"); 
     int[]sorted =ob.sort(nums); 
     for(int i=0 ; i<nums.length;i++) 
      System.out.println(nums[i]);    
    } 
} 
+2

是那裏的'c'-一個理由標籤還是隻是覺得它美觀? – EOF

+1

問題的C部分在哪裏? – Gerhardh

+0

@EOF熱鬧的評論+1 –

回答

1

因爲你的內部循環引用arr[j+1],它應該終止一步更快,而不是重複直到最後一個元素:

for(int i = 0 ; i < arr.length; i++) 
    for(int j = 0 ; j < arr.length - i - 1; j++) { 
     // Here ------------------------^ 
+0

非常感謝你的工作 –