C#排序问题

时间:2010-04-20 11:21:31

标签: c# optimization sorting performance

  • 我想知道什么是我应该用来有效排序的最好的C#数据结构?
  • 是列表还是数组还是什么?
  • 为什么标准数组[]没有在其中实现排序方法?

由于

5 个答案:

答案 0 :(得分:3)

排序效率取决于数据量和排序规则。你的问题没有一个明确的答案。

array []类确实实现了排序。见here。这是一种被称为Array.Sort的静态方法。

答案 1 :(得分:3)

可以对列表和数组进行排序,也可以对其他数据结构进行排序。

排序的效率取决于您要排序的数据以及您正在使用的排序算法。

This site gives a good demonstration不同的排序算法(点击绿色箭头开始演示)。

答案 2 :(得分:2)

使用通用列表,它内置Sort

如果您正在寻找一个在您的情况下更好的答案,那么我的建议是针对您希望排序的样本数据运行一些基准测试....然后制作一个决定。

答案 3 :(得分:1)

默认实现是对List<>等容器的快速排序。快速排序约为O(n * Ln(n))。对于大多数情况来说,这是一个不错的选择。对于少量数据然后O(n * n)算法有点慢,有时在特殊类型的数据上不太好,你最好使用特殊的排序算法(假设你可以自己实现或使用3- d党框架)

答案 4 :(得分:1)

实际上,如果列表发生了很大变化,也许您应该使用SortedList对其进行排序。

如果排序只发生一次。然后,真实性:如果你在内存中排序,任何O(n * Ln(n))就足够了。您会注意到List或Array之间没有区别。