配列の各文字列要素内の数値に基づいて文字列の配列を並べ替える効率的な方法を見つけようとしています。これは非常にうまく動作しますが、時にはそれがあまりにもかかる文字列配列のカスタム並べ替えのパフォーマンスを向上
class StringComparer : IComparer<string>
{
public int Compare(string a, string b)
{
string s1 = a;
string s2 = b;
Match matchA = Regex.Match(s1, @"\d+$");
Match matchB = Regex.Match(s2, @"\d+$");
long numberA = long.Parse(matchA.Value);
long numberB = long.Parse(matchB.Value);
if (numberB - numberA < 0)
{
return -1;
}
else
{
return 1;
}
}
}
:私は現在、(降順でソート)私のカスタムの比較子クラスでのArray.sort(配列、customComparer)静的メソッド(クイックソート)は、ビーイングを使用しています2.4Ghzプロセッサで1分以上かかる100 000文字列の配列でソートするのに多くの時間がかかります。私は同じことを達成するためのより効率的な方法があるのだろうかと思います。たとえば、別のソートアルゴリズムを実装するか、辞書を使用して値をソートするなどの別のアプローチをとることができます(値は文字列の数値部分です)。助言がありますか?前もって感謝します!
"辞書を使用して値をソートする"非常に有望ですね。あなたはそれを試しましたか? –
この種のソートを対象とする[基数ソート](http://en.wikipedia.org/wiki/Radix_sort)を試してみることができます:「同じ重要な位置を共有する個々の数字でキーをグループ化することによって整数キーを使ってデータをソートする値 " –
@ Luigi Mendoza:ソートアルゴリズムはボトルネックではありません。 – jason