我正试图找到一种有效的方法来基于数组的每个字符串元素中的数值对字符串数组进行排序。我目前使用的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