为什么我不想在我的插入排序中嵌入这个循环?

Why I don't want to embed this loop in my insertion sort?

我有一个 class,现在我们正在做插入排序。我认为我的代码工作正常,但我的教授说不要嵌入我的循环之一(它会移动我数组中的值)并且应该在 "searching".

时完成
public static void insertionSort(int array[]) {
    int n = array.length;
    for(int i = 0; i < n; i++) {
        int nextIndex = i;
        for(int j = 0; j < i; j++) {
            if(array[nextIndex] < array[j]) {
                int temp = array[nextIndex];
                // ********************************
                for(int k = i; k > j; k--) { 
                    array[k]=array[k-1];
                }
                // ********************************
                array[j]=temp;
                j = i
            }
        }
    }
}

以上有什么问题吗?

我想你教授的意思是这样的:你目前正在从下到上查看数组 [0..i] 的排序部分,以找到应该插入新元素的位置。 之后 您从上到下移动数组以将新元素移动到正确的位置。

相反,您可以只在元素中移动新元素并同时寻找正确的位置,类似于冒泡排序,如果您了解算法的话。这为您节省了这个for-循环您的教授标记。