2017-01-14 134 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

非常感谢你的工作 –