加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

heapq 对有序的数组列表进行整体排序

发布时间:2020-12-20 10:38:59 所属栏目:Python 来源:网络整理
导读:? """功能:实现对有序的多个数组整体排序,获取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) res

?

"""
功能:实现对有序的多个数组整体排序,获取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],i+1))
    return result

def test_heap_sort():
    print(heap_sort(arr=[[1,3,4,9,80,799],[0,6,8,12,999],[123,345,987]],top_k=10))
    print(heap_sort(arr=[[1,top_k=3))
    print(heap_sort(arr=[[1,799]],top_k=0))


if __name__ == "__main__":
    test_heap_sort()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读