2017-01-14 1 views
0

J'essaye de trier le tableau en utilisant le tri par calage algo en Java. Mais quand je cours le code un ArrayIndexOutofBoundException se produit. Voici mon codeTri du tableau par tri à bulles

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

est-il une raison pour le 'c'- étiqueter ou trouvez-vous simplement esthétique? – EOF

+1

Où est la partie C de votre question? – Gerhardh

+0

@EOF Commentaire hilarant +1 –

Répondre

1

Étant donné que vos références en boucle interne arr[j+1], il doit mettre fin à une étape plus tôt, et non itérer jusqu'au dernier élément:

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

Merci beaucoup cela fonctionne –