我不确定我的插入排序有什么问题。似乎对于i的每个增量,array [i]被复制到数组[i + 1],依此类推,直到整个数组被原始对象数组填充[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()`
我看了很多插入排序示例,我觉得好像我写得正确但显然,我错了。
答案 0 :(得分:1)
您必须SWAP(交换)内部循环中的值(使用if条件)。
你只是覆盖了其中一个。
祝你好运。