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

最初の 2 つの要素が間違って表示されていることに注意してください。どこが間違っていますか?

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 に答える