0
我正在使用Array.Sort()
以及代碼中顯示的參數。我無法獲得所需的順序如下數組Array.Sort()不保留大小寫不敏感的比較器的元素順序
jONeS
jones
joNes
jones
aDaMs
adams
adaMS
ADAMs
顯示該程序打印以下
adams
aDaMs
adaMS
ADAMs
jONeS
jones
joNes
jones
凡爲根據我下面的順序應印
aDaMs
adams
adaMS
ADAMs
jONeS
jones
joNes
jones
請注意前兩個元素顯示錯誤。 我哪裏錯了?
int N = Convert.ToInt32(Console.ReadLine());
string[] arr=new string[N];
for (int i = 0; i < N; ++i)
arr[i] = Console.ReadLine();
Array.Sort(arr, StringComparer.Create(new CultureInfo("en-US"),true));
Console.WriteLine();
for (int i = 0; i < N; ++i)
Console.WriteLine(arr[i]);
我是唯一一個誰看'ADAMs',問怎麼來它是在不同的顏色? –
我是否正確地假設你想在比較相等時保留元素的順序?如果是這樣,'Array.Sort()'使用Quicksort,這不是一個穩定的排序。只要兩個元素比較相等(所有Adamses和Joneses都是這種情況)* Adamses在Joneses之前出現的任何輸出都是正確的。如果您另外希望保留元素的原始順序,則需要像Mergesort這樣的穩定排序算法。 –