java - 如何在冒泡排序中修复java中的 'java.lang.ArrayOutOfBound exception'

标签 java data-structures bubble-sort

当我尝试运行冒泡排序代码时,出现异常java.lang.ArrayOutOfBound。您能帮我解决这个异常吗?

public class bubblesort {
    public static void main(String args[]) {
        int[] a = {30, 20, 7, -9, 0, 3, 122};
        int temp = 0;
        for (int b = a.length - 1; b > 0; b--) {
            for (int i = 0; i <= a.length - 1; i++) {
                if (a[i] > a[i + 1])
                    swap(a, i, i + 1);

            }
        }
        for (int c = 0; c <= a.length - 1; c++) {
            System.out.println(a[c]);
        }
    }

    public static void swap(int[] arr, int i, int j) {
        int temp;
        if (i == j) {
            return;
        }
        temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

最佳答案

for(int i=0;i<=a.length-1;i++){
        if(a[i]>a[i+1])

当你使用a[i+1]时,你超出了数组的范围。 在您的代码中,您的索引会上升到最后一个单元格。 改变你的for循环:

 for(int i=0;i<a.length-1;i++){

关于java - 如何在冒泡排序中修复java中的 'java.lang.ArrayOutOfBound exception',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57029069/

相关文章:

java - 配置 Spring 事务或 EJB CMT

java - 为什么我的变量在不同方法之间不保持顺序?

java - 如何使用双链表进行冒泡排序?

Javascript 从关联数组中查找最小数字(冒泡排序方法)

java - 无法更新静态变量(容易修复吗?)(Java)

Java - 在比较器中进行排序以在优先级队列中使用

database - 多数据库的通用信息模式

python - Zigzag级序遍历

java - Storm Esper bolt 元组锚定

c - 队列的递归计算