【发布时间】:2017-06-22 19:05:27
【问题描述】:
当下面的方法运行时,它会在第 179 行抛出一个ArrayIndexOutOfBoundsException,这是嵌套循环中的if 语句。
我认为这与j-1 的索引有关。所以我把 -1 拿出来,只在括号里加上j,但它在交换的第一行抛出了同样的异常。我一直在寻找冒泡排序语法,据我所知,我很好。我很接近,我知道。有什么建议可以解决这个问题吗?
public static void bubbleSort(int[]array1){
int temp = 0;
for(int i = 0; i < array1.length; i++){
for(int j = 0; j < (array1.length - i); j++){
if(array1[j-1] > array1[j]){
//swap
temp = array1[j-1];
array1[j-1] = array1[j];
array1[j] = temp;
}
}
}
}
【问题讨论】:
-
您从索引 0 开始,因此您的
j-1位于数组开头之前。尝试从 1 点开始。 -
循环中的第一次迭代......当 j==0 时,array1[j-1] 正在爆炸
-
当
j是0时会发生什么?array1[j-1]呢? -
如果您查看another answer of how this was done,您会发现如果您从
j=0开始,您将在第一个循环中超出范围(0-1 = -1)。尝试将其设置为 1,看看效果如何!
标签: java indexoutofboundsexception bubble-sort