为什么我无法在 Insertionsort Coded java 中获得输出
Why i am not able to get output in Insertionsort Coded java
我在执行 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);
}
}
显示的输出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at app.InsertionSortDemo.insertionsort1(InsertionSortDemo.java:11)
at app.InsertionSortDemo.main(InsertionSortDemo.java:23)
问题出在这里:
while(A[j-1]>v && j>=1)
Java 中的条件从左到右求值。因此,当j
的值为0
时,您将访问A[-1]
,从而导致异常。
只需更改验证 while
循环的方式:
while(j>=1 && A[j-1]>v)
我在执行 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);
}
}
显示的输出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at app.InsertionSortDemo.insertionsort1(InsertionSortDemo.java:11)
at app.InsertionSortDemo.main(InsertionSortDemo.java:23)
问题出在这里:
while(A[j-1]>v && j>=1)
Java 中的条件从左到右求值。因此,当j
的值为0
时,您将访问A[-1]
,从而导致异常。
只需更改验证 while
循环的方式:
while(j>=1 && A[j-1]>v)