【发布时间】:2014-02-13 22:45:59
【问题描述】:
我已经调试这段代码一段时间了,但我根本不知道为什么它不起作用。这是在 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;
}
如果有人能指出这里的错误,我会很高兴。提前致谢!
【问题讨论】:
-
谁是
numbers,谁是resultSet? -
@webuster numbers 是在类范围内声明的 n 长度 int 数组。 resultSet 是一个较短的 int 数组(resultSort 方法的参数)。
-
您的代码对我来说可以正常工作。您是否将
numbers[]传递到您的函数中? -
resultSet 末尾的连续相同数字将立即中止内部循环。这是您不期望的行为吗?所以像
5 1 1这样的数组永远不会正确排序。但它看起来(未经测试)就像其他一切都很好。 (编辑..实际上应该可以,因为之前的迭代应该导致1 5 1,这将正确排序) -
@HenrikHillestadLøvold 好吧,您可能应该保持一些一致性并将
resultSet传递给您的swap函数,以便您的交换实际上发生在同一个数组中。
标签: java algorithm insertion-sort