我正試圖找到一種有效的方法來基於數組的每個字符串元素中的數值對字符串數組進行排序。我目前使用的Array.Sort(陣列,customComparer)靜態方法(快速排序),與我的自定義比較器類的存在(在按降序排序):在字符串數組的自定義排序中提高性能
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;
}
}
}
這工作得很好,但有時需要太有很多時間需要排序,在2.4Ghz處理器上使用100 000個字符串的陣列需要一分多秒。我想知道是否有更有效的方法來實現這一點。例如,實現不同的排序算法或採用另一種方法,如使用字典和對值進行排序(值是字符串的數字部分)。有什麼建議麼?提前致謝!
「使用字典並對值進行排序」聽起來很有希望。你試過了嗎? – 2012-02-12 18:04:51
你可以嘗試[基數排序](http://en.wikipedia.org/wiki/Radix_sort),它的目標是這種排序:「用整數鍵對數據進行排序,通過將鍵分成共享相同重要位置的個別數字和值「 – 2012-02-12 18:22:21
@Luiggi門多薩:排序算法不是瓶頸。 – jason 2012-02-12 19:04:58