通过冒泡排序对数组进行排序

时间:2017-01-14 11:41:31

标签: java sorting indexoutofboundsexception bubble-sort

我正在尝试使用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]);            
    }
}

1 个答案:

答案 0 :(得分:1)

由于你的内部循环引用arr[j+1],它应该更快地终止一步,而不是迭代到最后一个元素:

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