我不确定我的插入排序有什么问题。似乎对于i的每个增量,都会将array [i]复制到array [i + 1],依此类推,直到整个数组被原始对象array [i]填充为止。

public static void insertionSort(Course[] courseArray, String sortBy) {
    Course value;   // the next value from the unsorted list to be inserted into the sorted list
    int i;     // i is a pointer to an item in the unsorted list
    int j;    // j is a pointer to an item in the sorted list; originally the sorted list is just a[0]

    for (i = 1; i < courseArray.length - 1; i++)
    {

        value = courseArray[i];

        j = i - 1;

        while (j >= 0 && (courseArray[j].compareByCourse(value)) < 0) {
            courseArray[j + 1] = courseArray[j];

            j = j - 1;

        }
        courseArray[i + 1] = value;

        System.out.println("i= " + i + "--------------------------------------");

        for (int p = 0; p < courseArray.length; p++)
        {
            System.out.println(courseArray[p].toString());
        }

    }//end for

}//end insertionSort()`


我看过许多插入排序示例,觉得好像写得正确,但是显然我错了。

最佳答案

您必须交换(交换)内部循环中的值(使用if条件)。

您只是覆盖其中之一。

祝好运。

09-11 17:48