2017-01-14 6 views
0

Ich versuche, das Array mit Bubble-Sort-Algo in Java zu sortieren. Aber wenn ich den Code starte, tritt ein ArrayIndexOutofBoundException auf. Hier ist mein CodeSortierung von Array nach Bubble-Sortierung

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

Gibt es einen Grund für die 'c'- Tag oder finden Sie es nur ästhetisch gefällig? – EOF

+1

Wo ist der C-Teil Ihrer Frage? – Gerhardh

+0

@EOF Hilarious Kommentar +1 –

Antwort

1

Da Ihre innere Schleife Referenzen arr[j+1], es früher einen Schritt beendet werden soll, und nicht durchlaufen bis zum letzten Element:

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

Vielen Dank, dass es funktioniert –