在实现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)
发布于 2015-03-27 04:04:13
问题在于:
while(A[j-1]>v && j>=1)Java中的条件是从左到右计算的。因此,当j的值为0时,您将访问A[-1],从而导致异常。
只需更改验证while循环的方式:
while(j>=1 && A[j-1]>v)https://stackoverflow.com/questions/29293063
复制相似问题