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()

  

posted @   bonelee  阅读(369)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.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端向外发起网络请求
点击右上角即可分享
微信分享提示