如下所示是学校教授的基本插入排序算法.如果更改while循环参数的顺序,则不起作用.
public static int[] insertionSort(int[] A){
for(int i =1; i<A.length;i++){
int key = A[i];
int j = i;
while(j>0&&A[j-1]>key){
A[j]=A[j-1];
j--;
}
A[j]=key;
}
return A;
}
Run Code Online (Sandbox Code Playgroud)
更改后(现在代码不会工作,它将给出java.lang.ArrayIndexOutOfBoundsException:-1 expection):
public static int[] insertionSort(int[] A){
for(int i =1; i<A.length;i++){
int key = A[i];
int j = i;
while(A[j-1]>key&&j>0){
A[j]=A[j-1];
j--;
}
A[j]=key;
}
return A;
}
Run Code Online (Sandbox Code Playgroud)
如果有任何其他方法来实现相同的算法,以便条件循环语句的顺序无关紧要?