【问题标题】:Insertion Error Java ArrayIndex out of bounds插入错误 Java ArrayIndex 超出范围
【发布时间】:2015-11-09 05:58:53
【问题描述】:

运行此代码:

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;

}

我在 array[cur] = array[prev]; 上收到 Indexoutofbounds 错误;

这是我的测试用例:

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

为什么会出错?我觉得逻辑不错

【问题讨论】:

  • 如果您应用了基本调试(例如打印curprev),您就不必问这个问题...

标签: java insertion-sort


【解决方案1】:
 int cur = array[j];// So, 'cur' will have any number may be out of bound

在您的循环中,您正在使用array[cur] = array[prev]; 并考虑超出范围的cur = 23。基本上,cur 表示当前索引,但您将当前元素存储在其中。

【讨论】:

    【解决方案2】:

    只需更改 while 循环,我希望它可以正常工作。

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

    【讨论】:

    • 我在控制台项目中检查了 (int j = 1; j = 0) && (array[prev]
    • 我知道这是错误的格式,但是这种方法在那里不起作用??如果是,请给我你的代码。
    • 我不说,它不再工作了,我只是错误地阅读了你的 sn-p,因为格式。并赞成你的答案
    猜你喜欢
    • 2021-11-12
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2012-01-16
    • 2011-01-29
    相关资源
    最近更新 更多