我现在的工作合并排序的imprived版本。我用C ++和C#实现它。然后分别与STL排序和中的Array.sort()算法进行了比较。在C ++中我有一个平等的(有时更好)的结果。但在C#中,我不得不使用不安全的代码使用指针。在这里,性能自动不算多用默认的排序相媲美。所以,我想知道 - 搜索结果 1.哪些算法在STL和.NET基础类库?(更好地链接)点击使用 2.执行不安全代码具有性能自动问题?点击 3.我关于测量新算法的性能自动任何suggessions?

有帮助吗?

解决方案

.NET使用快速排序(3快速排序的塞奇威克的中值)。

的变化

除非你是在排序方面的专家,我会感到惊讶,如果你能打败内置排序在很宽范围的数据(包括随机的,已经订购和反向有序集)。诉诸不安全的代码通常是一个坏主意...

其他提示

在STL排序可以取决于实现,但(如维基百科说)它通常是内省排序,快速排序和堆排序的组合。它必须具有的O的平均复杂性(N log n)的比较。

.NET使用快速排序。您可以使用反射以查看System.Collections.Generic.ArraySortHelper实施

在大多数情况下,快速排序将运行比归并快,即使在最坏情况下的执行时间越长。已经有标准的快速排序的一些改进,以及我想,但我不能肯定,如果任何这些被使用。

我似乎使用快速排序以及回顾STL,但我不完全确定。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top