我知道List<T>.Sort
和Enumerable.OrderBy
排序算法有區別。後者是穩定,這意味着元素是相等的,它保留了它們的原始順序。列表<T> .Sort和OrderBy的結果有什麼不同?
這一切都很好地重複了定義,但要教這個,我想演示一個簡單的示例,其中結果的算法不同。
我發現來到了這個例子「鑑於從最早的七個兄弟姐妹韋斯萊到最小,按名稱排序長度他們」。
var weasleys = new List<string>{"Bill", "Charlie", "Percy", "Fred", "George", "Ron", "Ginny"};
在這種情況下,排序依據
weasleys.OrderBy(x => x.Length)
可以得到:羅恩,比爾,弗雷德,珀西,金妮,喬治,查理。請注意,'比爾'和'弗雷德'的長度相同,但比爾比較老,所以比爾最先。
而List.Sort
weasleys.Sort((x, y) => x.Length.CompareTo(y.Length));
可以得到:羅恩,弗雷德,比爾,金妮,珀西,喬治,查理。
我的例子有七個項目。有一個更簡單的情況下有更少的項目? 算法給出不同結果的最小列表是什麼?
看看這個答案,HTTP://計算器。COM /問題/ 1832684/C鋒利排序和排序依據對比 – ZaoTaoBao
你的實施例具有設置的一條線,這兩種情況下之間共享,並且對於每種情況一行。你可能希望多少少? –
萬一別人猜錯了,請詳細說明你到底沒有在這個例子中明白了,你想怎麼有「較少的項目」。我如不猜。 – quetzalcoatl