插入错误Java ArrayIndex超出范围

时间:2015-11-09 05:58:53

标签: java insertion-sort

运行此代码:

public static int[] insertionSort(int[] array) {
    for (int j = 1; j < array.length; j++) {
        int cur = array[j];
        int prev = j - 1;
        while ( (prev > -1)  && (array[prev] > cur)) {

            array[cur] = array[prev];
            prev--;
        }
        array[prev + 1] = cur;
    }
    return array;

}

我在数组[cur] = array [prev];

上得到Indexoutofbounds错误

这是我的测试用例:

    int[] array = { 23, 5, 3, 5, 34, 2};

为什么会出错?我认为逻辑很好

2 个答案:

答案 0 :(得分:3)

 int cur = array[j];// So, 'cur' will have any number may be out of bound

在你的循环中,你正在使用array[cur] = array[prev];并考虑cur = 23超出界限。基本上,cur意味着当前索引,但您将当前元素存储在其中。

答案 1 :(得分:1)

只需更改while循环,我希望这个工作正常。

while ((prev >= 0) && (array[prev] < cur)) 
{
   array[prev + 1] = array[prev];
   prev--;
}