python最大几个数和最小几个数(堆排序)

最大几个数和最小几个数

import heapq

a = [7, 5, 3, 4, 8, 6, 0]
cc = heapq.nsmallest(2, a) #最小的两个数
dd = heapq.nlargest(3, a)  #最大的三个数
print(cc)  # [1, 2]
print(dd)  # [7, 6, 5]
heapq.heapify(a)  # 堆排序
heapq.heappop(a)  # 弹出一个,堆数据结构最重要的特征是 heap[0] 永远是最小的元素
print(a) 

# 当要查找的元素个数相对比较小的时候,函数 nlargest() 和 nsmallest() 是很 合适的。
# 如果你仅仅想查找唯一的最小或最大 (N=1) 的元素的话,那么使用 min() 和 max() 函数会更快些。
# 类似的,如果 N 的大小和集合大小接近的时候,通常先排序这个集合,
# 然后再使用切片操作会更快点 ( sorted(items)[:N] 或者是 sorted(items)[N:] )。
# 需要在正确场合使用函数 nlargest() 和 nsmallest() 才能发挥它们的优势 (如果 N 快接近集合大小了,那么使用排序操作会更好些)。

其他排序python实现

可以参考我的另一个博客

posted @ 2020-12-09 14:32  rm-rf*  阅读(561)  评论(0编辑  收藏  举报