我试图实现插入排序方法,但我没有得到写入数组排序

I was trying to implement insertionsort method byt i don't get a write array sorting

我的数组是 {8,3,5,9,2},我得到 {3,5,9,2}

    public static void insertionsort(int[] a) {
    for (int i = 1; i < a.length; i++) {
        int value = a[i];
        // int c=0;
        for (int j = i - 1; value < a[j + 1] && j >= 0; j--) {
            int temp = a[j - 1];
            a[j - 1] = a[j];
            a[j] = temp;
            // c++;
        }

    }
}

谁能帮我找出代码中的问题

.

你永远不会进入第二个for循环。

开始时i=1 j=i-1 value=3 a[j+1]=3 value < a[j + 1] 就像 3<3 所以它总是假的。

试试这个:

    int n = a.length; 
    for (int i=1; i<n; ++i) 
    { 
        int temp = a[i]; 
        int j = i-1; 

        while (j >= 0 && a[j] > temp) 
        { 
            a[j+1] = a[j]; 
            j = j-1; 
        } 
        a[j+1] = temp; 
    }