[数据结构与算法] 优先级队列/堆队列 完全二叉堆 左式堆 python里的heapq
学习 清华大学 尊敬的邓俊辉老师的C++数据结构与算法课程 第10章 优先级队列,本文旨在摘要和心得体会。 文章目录 1 优先级队列需求 2 完全二叉堆 2.1 定义 2.2 getMax() 2.3 insert() 插入与上滤 2.4 delMax() 删除与下滤 2.5 heapification 建堆 2.6 就地堆排序 3 左式堆 3.1 堆合并 3.2 左式堆 3.3 左式堆合并算法 3.4 左式堆 插入 3.5 左式堆 删除 4 python里的heapq 1 优先级队列需求 计算机系统里CPU的任务调度, 循 优 先 级 访 问 \color{red}{循优先级访问} 循 优 先 级 访 问 。 不同于队列结构的先进先出,找队列里最大值先出。 约定:优先级队列里的每个数据项目都有一个关键码key,可以进行比较大小(可依靠重载比较操作符实现),关键码越大,优先级越高。 操作接口描述: 操 作 接 口 功 能 描 述 size() 报告优先级队列的规模,即其中词条的总数 insert() 将指定词条插入优先级队列 getMax() 返回优先级最大的词条(若优先级队列非空) delMax() 删除优先级最大的词条(若优先级队列非空) 借助无序列表、有序列表、无序向量或有序向量,都难以同时兼顾insert()和 delMax()操作的高效率