0
當我檢查,我找到正確的最小值和前一個節點。之後,我需要做的唯一事情就是交換節點,但是在實現這個代碼之後,輸出什麼也沒有。選擇排序在單鏈表
繪製問題後,我認爲問題是排序部分。因此,我添加了一個名稱排序的節點,但仍然無法解決我的問題。
這裏是我的示例代碼:
public void selectionSort()
{
Node<T> first = head;
Node<T> previous = head;
Node<T> minimum = head;
Node<T> compare;
Node<T> temp;
Node<T> sorted = head;
while (first.Next != null)
{
sorted = minimum; // with this I'm finding the last sorted node
minimum = first;
compare = first.Next;
while (compare.Next != null)
{
if (minimum.Value.CompareTo(compare.Next.Value) > 0)
{
previous = compare; // Need previous node to changing connections
minimum = compare.Next; // Saving minimum value
}
compare = compare.Next;
}
// Swapping nodes
temp = first;
previous.Next = first;
first.Next = minimum.Next;
minimum.Next = temp.Next;
if (temp != head)
{
sorted.Next = minimum; // Adding minimum node to sorted part
}
first = first.Next;
}
}
我改變的時候開始work.Thank您在代碼中的幾件事情!而不是'Null','null'.Also'if(currentInner.Value.CompareTo(minimum.Value)<0)',而不是'>' –
修正了這些,謝謝! –
@BatuhanAydın我以前的解決方案存在問題,所以我發佈了一個不同的,更簡單的解決方案。看到我更新的答案。 –