【发布时间】:2017-04-03 15:29:08
【问题描述】:
我目前正在尝试为 java 中的节点编写选择排序。 我还编写了一个完美的冒泡排序,但由于某种原因,选择排序不起作用。我对java很陌生,所以请原谅我没有发现错误。
我的选择排序实际上对所有内容都进行了排序。结果很好。但执行并不是选择排序的工作方式。
首先我切换了节点而不是值,它工作但不是应该的。所以我想出了将节点留在原处并切换值的解决方案。
public void selectionSort() {
for (IntegerNode i = first; i != null; i = i.nextNode) {
for (IntegerNode j = i.nextNode; j != null; j = j.nextNode) {
if (i.value > j.value) {
int temp = i.value;
i.value = j.value;
j.value = temp;
}
}
}
}
所以第一次它实际上做了它应该做的事情。它切换位置。但在那之后,它将最小的 int 放在更大的 int 前面,而不是切换它。我将向您展示一个示例输出
未分类:
2, 9, 7, 6, 3, 1, 5, 8,
开始排序:
1, 9, 7, 6, 3, 2, 5, 8,
1, 2, 9, 7, 6, 3, 5, 8,
1, 2, 3, 9, 7, 6, 5, 8,
1, 2, 3, 5, 9, 7, 6, 8,
1, 2, 3, 5, 6, 9, 7, 8,
1, 2, 3, 5, 6, 7, 9, 8,
1, 2, 3, 5, 6, 7, 8, 9,
排序:
1, 2, 3, 5, 6, 7, 8, 9,
// 你可以在第 1 行看到 - 它将 2 与 5 切换,这正是选择排序应该做的。 // 第二行 + - 它只取小整数并将其放在大整数的前面。
这是我的第一个问题,我希望我提供了足够的代码。如果您需要更多,请添加评论!提前致谢。
【问题讨论】:
标签: java sorting nodes selection-sort