我已经调试了这段代码一段时间了,我根本无法弄清楚它为什么不起作用。这是尝试在Java中实现顺序插入排序。
public void resultSort(int[] resultSet){
int j;
for(int i = 0; i < resultSet.length; i++){
j = i;
while(j > 0 && resultSet[j-1] < resultSet[j]){
swap(j, j-1);
j = j-1;
}
}
}
public void swap(int index1, int index2){
int sw = numbers[index1];
numbers[index1] = numbers[index2];
numbers[index2] = sw;
}
如果有人可以在这里指出错误,我会非常高兴。提前谢谢!
答案 0 :(得分:1)
numbers
vs resultSet
似乎存在问题。如果您将numbers
数组作为参数传递给排序函数,则可以工作。
一些建议:
resultSet
参数传递给swap
函数,以便保持您实际排序的数组的一致性答案 1 :(得分:1)
如果你致电resultSort(numbers)
,它就有效。您的算法按降序排序。这是我的测试代码我做了一些小改动,使它全部静态。我想问题是, resultSort 没有使用参数数字调用。
static int numbers[] = new int[]{34, 24, 56, 12, 45, 2, 53, 758};
public static void main(String[] args) {
resultSort(numbers);
for (int i : numbers) {
System.out.println(i + " ");
}
}
public static void resultSort(int[] resultSet) {
int j;
for (int i = 0; i < resultSet.length; i++) {
j = i;
while (j > 0 && resultSet[j - 1] < resultSet[j]) {
swap(j, j - 1);
j = j - 1;
}
}
}
public static void swap(int index1, int index2) {
int sw = numbers[index1];
numbers[index1] = numbers[index2];
numbers[index2] = sw;
}