小编Jun*_*aid的帖子

为什么我们不能在插入sort的while循环中更改语句的顺序?

如下所示是学校教授的基本插入排序算法.如果更改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)

如果有任何其他方法来实现相同的算法,以便条件循环语句的顺序无关紧要?

java sorting algorithm insertion-sort

1
推荐指数
1
解决办法
106
查看次数

标签 统计

algorithm ×1

insertion-sort ×1

java ×1

sorting ×1