首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
什么是数据结构?
什么是算法?
算法分析
字符串-String
Linked List - 链表
Binary Tree - 二叉树
Huffman Compression - 霍夫曼压缩
Queue - 队列
Heap - 堆
Stack - 栈
Set
Map - 哈希表
Graph - 图
ArrayList
双链表
树的遍历
二叉搜索树
数据持久化
排序
当前位置:
首页>>
技术小册>>
数据结构与算法(上)
小册名称:数据结构与算法(上)
一般情况下,堆通常指的是二叉堆,二叉堆是一个近似完全二叉树的数据结构,即披着二叉树羊皮的数组,故使用数组来实现较为便利。子结点的键值或索引总是小于(或者大于)它的父节点,且每个节点的左右子树又是一个二叉堆(大根堆或者小根堆)。根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常被用作实现优先队列。 特点 以数组表示,但是以完全二叉树的方式理解。 唯一能够同时最优地利用空间和时间的方法——最坏情况下也能保证使用 2NlogN2N \log N2NlogN 次比较和恒定的额外空间。 在索引从0开始的数组中: 父节点 i 的左子节点在位置(2*i+1) 父节点 i 的右子节点在位置(2*i+2) 子节点 i 的父节点在位置floor((i-1)/2) 堆的基本操作 以大根堆为例,堆的常用操作如下。 最大堆调整(Max_Heapify):将堆的末端子节点作调整,使得子节点永远小于父节点 创建最大堆(Build_Max_Heap):将堆所有数据重新排序 堆排序(HeapSort):移除位在第一个数据的根节点,并做最大堆调整的递归运算
上一篇:
Queue - 队列
下一篇:
Stack - 栈
该分类下的相关小册推荐:
业务开发实用算法精讲
数据结构与算法(中)
编程之道-算法面试(上)
编程之道-算法面试(下)
算法面试通关 50 讲
数据结构与算法(下)
数据结构与算法之美