美文网首页
Python3 - 序列合并后排序迭代

Python3 - 序列合并后排序迭代

作者: 惑也 | 来源:发表于2018-12-22 14:36 被阅读19次

问题

一系列排序序列,将它们合并后得到一个排序序列,并在上面迭代遍历。

解决方案

heapq.merge() 函数可以解决这个问题。比如:

import heapq

a = [1, 4, 7, 10]
b = [2, 5, 6, 11]

for c in heapq.merge(a, b):
    print(c, end = ' ')

1 2 4 5 6 7 10 11 

讨论

heapq.merge() 函数的可迭代特性,意味着它不会立马读取所有序列,可以在非常长的序列中使用它,而不会有太大的开销。

需要强调的是, heapq.merge() 需要所有输入序列必须是排过序的,它并不会预先读取所有数据到堆栈中或者预先排序,也不会对输入做任何的排序检测。 它仅仅是检查所有序列的开始部分并返回索引最小的元素,这个过程一直会持续直到所有输入序列中的元素都被遍历完。

相关文章

  • Python3 - 序列合并后排序迭代

    问题 一系列排序序列,将它们合并后得到一个排序序列,并在上面迭代遍历。 解决方案 heapq.merge() 函数...

  • 23. 合并K个排序链表

    合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 思路--顺序合并 python3解...

  • 十大排序算法之五:归并排序(Python)

    归并排序 1. 算法步骤 1.1 申请空间,使其大小为两个已排序序列之和,该空间用来存放合并后的序列;1.2 设定...

  • 归并排序——MergeSort

    归并排序 归并排序算法的运作如下: 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指...

  • 数组逆序序列

    归并排序 归并排序是采用分治的一种排序方法:先将元素分开,也就长度为1的有序序列。合并有序序列,直至合并成一个数组...

  • 归并排序算法详解

    归并排序的核心就是将分割后的有序子序列合并成一个有序的序列。 给定一个无序的序列,分割成2段子序列,分割后,要开始...

  • itertools模块详解

    itertools模块包含一组函数用于处理序列数据集。 合并和分解迭代器 chain 用于合并多个迭代器, 利用c...

  • leecode刷题(27)-- 合并k个排序链表

    leecode刷题(27)-- 合并k个排序链表 合并k个排序链表 合并 k 个排序链表,返回合并后的排序链表。请...

  • 分治策略之归并排序

    合并排序也叫归并排序,它的主要思想是分治法,把待排序序列分为若干有序子序列,然后将两个或两个以上的有序子序列进行...

  • 归并排序

    1、归并排序(merge sort) (1)描述 归并排序采用分治法,先使每个子序列有序,再合并子序列使整体有序。...

网友评论

      本文标题:Python3 - 序列合并后排序迭代

      本文链接:https://www.haomeiwen.com/subject/psuikqtx.html