我在 java 中练习插入排序,但是当我在内部循环中替换 ++j 中的 j+1 时,它就卡在那里了

I was practicing insertion sort in java, but as soon as I replaced the j+1 from ++j in the inner loop it got stucked over there

当我用 ++j 替换 j+1 时,它卡在了那里,无限循环既不递增也不递减 public class 插入排序 {

public static void main(String[] args) {
    int[] arr= {5,7,6,4,8,9,3,1,2};
    int n = arr.length;
    for(int i = 1 ; i < n ; i++) {
        int j = i-1;
        int key = arr[i];
        while(j>=0&&key<arr[j]) {
            arr[j+1]=arr[j--]; // ***Working Fine***
        }
        arr[++j]=key;
    }
    for (int i : arr) {
        System.out.print(i+" ");
    }


  } 
 }

卡在下面的代码中

public class InsertionSort {

public static void main(String[] args) {
    int[] arr= {5,7,6,4,8,9,3,1,2};
    int n = arr.length;
    for(int i = 1 ; i < n ; i++) {
        int j = i-1;
        int key = arr[i];
        while(j>=0&&key<arr[j]) {
            arr[++j]=arr[j--];// ***Stucked***
        }
        arr[++j]=key;
    }
    for (int i : arr) {
        System.out.print(i+" ");
    }
    }

}

这是要无限卡住的意思。 在j+1的第一个例子中,当你做j+1的时候j的值并没有递增。

while(j>=0&&key<arr[j]) {
        arr[j+1]=arr[j--]; // value of J is not incremented, it's actually decremented by j--.
    }

在++j的第二个例子中,执行了两个操作。

操作 1:

arr[++j] // This operation increments the value of j

操作2:

arr[j--] // This operation decrements the value of j

在同一行中,您正在递增和递减 j 的值。因此 j 的值永远不会为 0,并且它陷入了无限循环。 希望这能澄清问题。