我已经调试这段代码有一段时间了,我根本搞不懂为什么它不能工作。这是在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;
}如果有人能指出这里的错误,我会很高兴的。提前感谢!
发布于 2014-02-13 23:04:55
您似乎对numbers和resultSet有问题。如果将numbers数组作为参数传递给排序函数,它可以工作。
一些建议:
resultSet作为参数传递给swap函数,以保持实际排序的一致性发布于 2014-02-13 23:12:19
如果你打电话给resultSort(numbers),它就能工作。你的算法向下排列。下面是我的测试代码,我做了一些小小的修改,使其完全是静态的。我猜问题是,参数resultSort不是用参数numbers调用的。
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;
}https://stackoverflow.com/questions/21767188
复制相似问题