当前位置: 首页 > 面试题库 >

排序列表上的Python排序复杂度

唐麒
2023-03-14
问题内容

sort(already_sorted_list)Python的复杂性是什么?Python是否检查给定的iterable是否已排序,还是我必须自己做?我在文档中的任何地方都找不到它。


问题答案:

完全 取决于实现。python保证的是内置排序算法是 稳定的 (比较相等的元素保留其相对顺序)。如果要实现,甚至可以使用稳定的冒泡排序。

Cpython使用TimSort(插入排序的合并排序合并),如果输入已经排序,我相信它具有O(N)的复杂性-
它可以选择插入排序的最佳情况和合并排序的最坏情况(O(NlogN ))。

而且,如果您对实现感到好奇,那么源代码将提供非常好的描述。



 类似资料:
  • 问题内容: 我有一个奇怪的清单,以下列方式建立: 我想先按数字(desc)排序,然后如果数字相同,则按名称(asc)排序。所以我想要的结果是: 我试图考虑可以在sort方法中使用的lambda函数,但是我不确定是否可以这样做。 问题答案: python中的sort函数允许将函数作为sort键传递: 编辑: 1.排序顺序 2.演示复制和就地排序

  • 下面是数组上HEAPSORT的伪代码 很明显,BUILD-MAX-HEAP的复杂度为O(n),MAX-HEAPIFY的复杂度为O(h),其中h是具有最大logn值的堆的高度。 我不完全理解的是为什么HeapSort有nlogn的复杂性。我知道我们有n次迭代,每次迭代都有一个MAX-HEAPIFY。但是他MAX-HEAPIFY调用在每次迭代中都得到一个大小递减的HEAP。那么为什么每次迭代都有O(l

  • 我有下表在OracleSQL方言(被调用与一些java代码) 我正在寻找一种方法来进行以下分类: 将part、locker、serial#组合在一起,并在每个组内按升序或降序对描述进行排序,同时确保每个组的第一条记录也按升序或降序正确排序(冲突应按part、locker、serial的所需顺序排序)。例如: 排序DESC将产生: 如何实现这种复杂的排序类型?仅仅通过查询就可以吗?

  • 我有一个linkedhashmap的列表,我需要根据linkedhashmap的属性对列表进行排序。 这是我的LinkedHashMap; 我想根据“代码”属性对此列表进行排序。

  • 问题内容: 如何按降序对列表进行排序? 问题答案: 在一行中,使用: 将函数传递给:

  • 我有一个点列表,每个点都是一个大小为2的小列表。我想按x的递增顺序对点列表进行排序,如果x值相等,我就按y的递减顺序排序来打破平局。 我编写了一个自定义比较器来对点进行排序,如下所示: 以下是排序前的输入: 以下是使用上述比较器排序后产生的结果: 观察:- 输入按x的升序排序。 (5,12)被正确地放在(5,10)之前 (9,-15)被正确地放在(9,-1000)之前 然而,(10001,-10)