python top n排序
【摘要】 python top k 排序
import heapqdef get_least_numbers_big_data( alist, k): max_heap = [] length = len(alist) if not alist or k <= 0 or k > length: return k = k - 1 for ele in alist: ele ...
python top k 排序
-
import heapq
-
def get_least_numbers_big_data( alist, k):
-
max_heap = []
-
length = len(alist)
-
if not alist or k <= 0 or k > length:
-
return
-
k = k - 1
-
for ele in alist:
-
ele = -ele
-
if len(max_heap) <= k:
-
heapq.heappush(max_heap, ele)#往堆中插入一条新的值
-
else:
-
heapq.heappushpop(max_heap, ele)#顾名思义,将值插入到堆中同时弹出堆中的最小值
-
-
return map(lambda x:-x, max_heap)
-
-
-
if __name__ == "__main__":
-
l = [1, 9, 2, 4, 7, 6, 3]
-
min_k = get_least_numbers_big_data(l, 3)
-
print([x for x in min_k])
堆的定义
堆是一种特殊的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构指的是二叉树。堆的特点是根节点的值最大(或者最小),而且根节点的两个孩子也能与孩子节点组成子树,亦然称之为堆。
堆分为两种,大根堆和小根堆是一颗每一个节点的键值都不小于(大于)其孩子节点的键值的树。无论是大根堆还是小根堆(前提是二叉堆
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/78237812
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)