为什么我无法在Insertion Sort Code java中获得输出

时间:2015-03-27 04:01:34

标签: java insertion-sort

我在实现InsertionSort

时无法获得输出
package app;

public class InsertionSortDemo {

    public static void  insertionsort1(int A[]) {
        int i,j,v;
        for(i=2;i<=A.length-1;i++) {
            v=A[i];
            j=i;
            while(A[j-1]>v && j>=1) {
                A[j]=A[j-1];
                j--;
            }
            A[j]=v;
        }
    }

    public static void main(String s[]) {
        int ar[]={6,8,1,4,5,3,7,2};
        insertionsort1(ar);
    }
}

输出显示:

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:-1
      在app.InsertionSortDemo.insertionsort1(InsertionSortDemo.java:11)​​
      在app.InsertionSortDemo.main(InsertionSortDemo.java:23)

1 个答案:

答案 0 :(得分:2)

问题在于:

while(A[j-1]>v && j>=1)

Java中的条件从左到右进行评估。因此,当j的值为0时,您将访问A[-1],从而导致异常。

只需更改验证while循环的方式:

while(j>=1 && A[j-1]>v)