heapq 对有序的数组列表进行整体排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | """ 功能:实现对有序的多个数组整体排序,获取top k个最小元素 """ from heapq import * def heap_sort(arr, top_k): q = [] for i in range ( len (arr)): heappush(q, (arr[i][ 0 ], i, 0 )) result = [] for k in range (top_k): if q: data, index, i = heappop(q) result.append(data) if i + 1 < len (arr[index]): heappush(q, (arr[index][i + 1 ], index, i + 1 )) return result def test_heap_sort(): print (heap_sort(arr = [[ 1 , 3 , 4 , 9 , 80 , 799 ], [ 0 , 4 , 6 , 8 , 12 , 999 ], [ 123 , 345 , 987 ]], top_k = 10 )) print (heap_sort(arr = [[ 1 , 3 , 4 , 9 , 80 , 799 ], [ 0 , 4 , 6 , 8 , 12 , 999 ], [ 123 , 345 , 987 ]], top_k = 3 )) print (heap_sort(arr = [[ 1 , 3 , 4 , 9 , 80 , 799 ]], top_k = 10 )) print (heap_sort(arr = [[ 1 , 3 , 4 , 9 , 80 , 799 ]], top_k = 3 )) print (heap_sort(arr = [[ 1 , 3 , 4 , 9 , 80 , 799 ]], top_k = 0 )) if __name__ = = "__main__" : test_heap_sort() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2017-09-20 HBase单机环境搭建
2017-09-20 WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等
2017-09-20 常见的DNS攻击——偷(劫持)、骗(缓存投毒)、打(DDos)
2017-09-20 DDos游戏行业受攻击最多
2017-09-20 木马——本质就是cs socket远程控制,反弹木马是作为c端向外发起网络请求