我正在实现复杂的算法,其中部分是对有序数字序列的数组进行排序。整个算法应该是nlog(n) 复杂度,所以这部分应该相同或更好,但我不知道该怎么做。
有一个例子。有一个序列数组:
(0)
(0,1)
(0)
(0,5)
(2,4)
()
(0,5)
()
(2,4)
(1,3,4)
最后的排序应该是:
()
()
(0)
(0)
(0,1)
(0,5)
(0,5)
(1,3,4)
(2,4)
(2,4)
有一些重要的注意事项:
- 排序是字典式的
- 序列是有序的,但不能保证连续性
- 还有空序列
- 有很多相同的序列
- 序列的长度从 0 到数百,仅此而已
- 数组可以有 100k 长,可能不会再长了
- 最终实现将在 C++ 中,但现在可能并不重要
你能建议我最好的排序方法吗?非常感谢