0

我正在使用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]);
4

1 回答 1

3

正如 Jeroen Mostert 所说 Array.Sort 是不稳定的(参考)但是OrderBy在 LINQ 中是稳定的(参考)你可以使用它。

所以更换

Array.Sort(arr, StringComparer.Create(new CultureInfo("en-US"),true));

arr = arr.OrderBy(name=>name, StringComparer.Create(new CultureInfo("en-US"),true)).ToArray();
于 2015-10-07T21:52:00.073 回答