为什么这个insertSort代码没有给出正确的输出?

时间:2014-12-28 20:59:18

标签: java sorting insertion-sort

public class First{
    public static void main(String[] args){
        int[] arr = new int[]{4, 2, 7, 8};
        int[] p = insertionSort(arr);
        System.out.println(java.util.Arrays.toString(p));

    }

    public static int[] insertionSort(int[] arr){
        int key;
        int i;
        for (int j = 1; j < arr.length; j++){
            key = arr[j];
            i = j - 1;
            while( (i > 0) && (arr[i] > key)){
                arr[i + 1] = arr[i];
                i--;
            }
            arr[i + 1] = key;
        }
        return arr;
    }

}

我不确定发生了什么,但上面的代码只打印原始的未排序数组而不是排序的int数组。

1 个答案:

答案 0 :(得分:1)

while ((i > 0) && (arr[i] > key)) {

应该是

while ((i >= 0) && (arr[i] > key)) {

然后我得到

[2, 4, 7, 8]