我目前正在嘗試編寫java中節點的選擇排序。 我也編寫了一個完美的氣泡排序,但由於某種原因選擇排序不起作用。我對java很陌生,所以請原諒我沒有發現錯誤。節點上的選擇排序 - java
我的選擇排序實際上排序的一切。結果很好。但執行不是選擇排序應該如何工作。
首先我切換節點而不是價值,它的工作,但不是它應該的。所以我想出瞭解決方案,讓Node離開它,然後切換值。
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,正是選擇應該做什麼。 //第二行+ - 它只需要小的整數,並把它放在更大整數的infront。
這是我的第一個問題,我希望我給了足夠的代碼。如果您需要更多,只需添加評論!提前致謝。
Thanks!我現在知道了。我完全搞砸了選擇排序。 –