【发布时间】:2023-04-02 06:29:02
【问题描述】:
所以我想知道如果我们使用一个键来排序函数的时间复杂度是多少,我知道它是正常排序的 nlogn 但对于以下情况是否相同:
a=[[(1, 4,),1], [(2, 4), 10], [(1, 3), 11], [(2, 3), 5], [(3, 4), 7]]
a=sorted(a, key = lambda x: x[1],reverse=True)
所以在这里我根据第二个元素对列表进行了排序,所以时间复杂度会保持不变,即 nlogn 还是会有所不同
【问题讨论】:
-
我想不出它会改变的任何原因。但是,如果获取密钥是一些昂贵的计算函数,则可能是另一回事。无论哪种方式,尝试优化它可能都不值得。通常,除非另有说明,否则您可以假设提供的功能以尽可能最好的方式实现。 Plus Python旨在易于使用和灵活性。速度有时是您为这些功能付出的代价。
-
Python 的
sorted()适用于timsort,它的最坏情况复杂度为nlogn,最好情况为n。在您的情况下,时间复杂度将与上述相同。您只是要求对键列表进行排序,这与排序列表相同。 -
@Locke ",尝试优化这可能不值得"- 说得好!
-
@Solen'ya 我认为 key 功能也需要一些时间,但我想不会,我只是看到而不是 key 我们也可以使用 operator 模块中的 itemgetter更少的时间。
标签: python list sorting tuples key