python top n排序

举报
风吹稻花香 发表于 2021/06/05 00:00:05 2021/06/05
【摘要】 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 排序


  
  1. import heapq
  2. def get_least_numbers_big_data( alist, k):
  3. max_heap = []
  4. length = len(alist)
  5. if not alist or k <= 0 or k > length:
  6. return
  7. k = k - 1
  8. for ele in alist:
  9. ele = -ele
  10. if len(max_heap) <= k:
  11. heapq.heappush(max_heap, ele)#往堆中插入一条新的值
  12. else:
  13. heapq.heappushpop(max_heap, ele)#顾名思义,将值插入到堆中同时弹出堆中的最小值
  14. return map(lambda x:-x, max_heap)
  15. if __name__ == "__main__":
  16. l = [1, 9, 2, 4, 7, 6, 3]
  17. min_k = get_least_numbers_big_data(l, 3)
  18. print([x for x in min_k])

 

堆的定义

 

堆是一种特殊的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构指的是二叉树。堆的特点是根节点的值最大(或者最小),而且根节点的两个孩子也能与孩子节点组成子树,亦然称之为堆。 
堆分为两种,大根堆和小根堆是一颗每一个节点的键值都不小于(大于)其孩子节点的键值的树。无论是大根堆还是小根堆(前提是二叉堆

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/78237812

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。