algorithm - 先按 x1 排序,然后按 x2 排序的时间复杂度?

标签 algorithm sorting big-o

标准排序函数文献会告诉您排序通常(​​合并、快速)可以在 N log N 中完成。

例如,如果我有这个列表:[1,6,3,3,4,2]

会在NlogN时间内排序为:[1,2,3,3,4,6]

如果我有一个按第一个属性排序的列表,然后是第二个属性怎么办?

像这样:[(1,1),(6,3),(3,4),(3,1),(2,8)] 到这样: [(1,1),(2,8),(3,1),(3,4),(6,3)]

它的时间复杂度是多少?

我想出的是,如果所有第一个索引都相同,那么您只是再次执行 N log N,所以是一样的。如果有一堆不同的第一个索引,那么您正在重新排序一堆小集合。

最佳答案

合并排序(或快速排序)执行 O(N log N) 比较。它的时间复杂度是 O(N log N * time_to_compare_two_elements)。比较一对元素的时间复杂度是常数(如果比较两个元素的时间是常数)。因此,对数组进行排序的时间复杂度也是 O(N log N)

关于algorithm - 先按 x1 排序,然后按 x2 排序的时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28141063/

相关文章:

java - 如果一个算法调用另一个算法来执行其功能,它的总体时间复杂度是否会受到影响?

algorithm - 寻找一种算法来有效地布置日历事件横幅

c++ - std::sort 降序与运算符重载

python - 字典排序的时间复杂度

iphone - Objective C 排序数组

data-structures - 为什么 HashMap 查找是 O(1),即恒定时间?

algorithm - 如何订购这份 list ?

javascript - 嵌套对象的所有组合

vb.net - 将图像文件存储在数据库中是否适合在网络中运行的桌面应用程序?

java - 精确的大 O 执行计数