为什么我不想在我的插入排序中嵌入这个循环?
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
-循环您的教授标记。
我有一个 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
-循环您的教授标记。