数组后面的Java插入排序算法
因此,我一直在尝试编写插入排序算法,以便将值插入到数组的后面,而不是前面(将最大值放在后面,而不是最小值放在前面),但我一直很难确定是否正确。如果有人能告诉我我的想法是否正确,那就太好了。这是我的代码,它似乎没有按我所希望的那样工作:数组后面的Java插入排序算法,java,algorithm,insertion-sort,Java,Algorithm,Insertion Sort,因此,我一直在尝试编写插入排序算法,以便将值插入到数组的后面,而不是前面(将最大值放在后面,而不是最小值放在前面),但我一直很难确定是否正确。如果有人能告诉我我的想法是否正确,那就太好了。这是我的代码,它似乎没有按我所希望的那样工作: public static void insertionSort(Comparable[] item, int size) { for (int k = size - 1; k > 0; k--) insertInOrder(item
public static void insertionSort(Comparable[] item, int size) {
for (int k = size - 1; k > 0; k--)
insertInOrder(item, k);
}
private static void insertInOrder(Comparable[] item, int m) {
Comparable save = item[m];
for (; m > 0 && item[m-1].compareTo(save) > 0; m--)
item[m] = item[m - 1];
item[m] = save;
}
您的代码有两个问题。以下是一个固定版本:
public static void insertionSort(Comparable[] item, int size) {
// Changed to k >= 0, otherwise we would have ignored the 0th
// element and not move it to higher positions in the array
for (int k = size - 1; k >= 0; k--)
insertInOrder(item, k, size);
}
// Added size as a parameter
private static void insertInOrder(Comparable[] item, int m, int size) {
Comparable save = item[m];
// This loop needs to count upward, because you
// want to move large values towards the back
for (; m + 1 < size && item[m+1].compareTo(save) < 0; m++)
item[m] = item[m + 1];
item[m] = save;
}
publicstaticvoidinsertionsort(可比[]项,整数大小){
//更改为k>=0,否则我们将忽略第0个
//元素,而不是将其移动到数组中的更高位置
对于(int k=size-1;k>=0;k--)
插入器(项目,k,尺寸);
}
//添加了大小作为参数
专用静态void insertinoder(可比[]项,整数m,整数大小){
可比节省=项目[m];
//这个循环需要向上计数,因为
//要将较大的值移到后面吗
对于(;m+1
补充说明:
- 通常我们对数组的名称进行复数,即:
Comparable[]items
- 考虑对
类型使用泛型可比较的
- 下次再问你的问题
for(int k=size;0