【问题标题】:Sorting of array by bubble sort [duplicate]通过冒泡排序对数组进行排序[重复]
【发布时间】:2017-05-29 17:00:30
【问题描述】:

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

【问题讨论】:

  • c-标签是有原因的,还是您只是觉得它美观?
  • 你问题的 C 部分在哪里?
  • @EOF 搞笑评论 +1
  • 术语说明:运行执行代码时会引发异常。不是当你编译它。当您询问异常时,总是发布异常的完整堆栈跟踪(并在之前阅读它,因为它包含很多有用的信息)。

标签: java sorting indexoutofboundsexception bubble-sort


【解决方案1】:

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

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

【讨论】:

  • 非常感谢它的工作原理
猜你喜欢
  • 2020-05-17
  • 2020-07-17
  • 2017-01-24
  • 1970-01-01
  • 2018-11-11
  • 2016-02-10
  • 1970-01-01
  • 2020-04-08
  • 2016-07-25
相关资源
最近更新 更多