【算法简述】基础数据结构-堆

【排序算法三】结构与排序算法 数据结构排序算法 阅读详情


这是一个特殊的数据结构,它基于完全二叉树,所以有如下特点:

  • 所有的节点都出现在最后一层,或s-1层
  • 任意的节点如果右子树的最大的层次,左子树的最大的层次为s或s+1

一棵二叉树中,最下面两层结点的度可以小于2,并且最下层的叶结点集中在靠左的任意位置上,这样的二叉树被称为完全二叉树。

在这里插入图片描述
所以堆是个特殊的数据结构 ,看图这就是个完全二叉树 堆,因此,堆又是完全二叉树。(怎么??)

堆的结构

大根堆

大根堆这个东西,直白的说就是根结点的值比两个子结点都大。

struct node{
    inline bool operator()(const int &x,const int &y){
        return x < y;
    }
};

在这里插入图片描述

小根堆

小根堆这个东西,直白的说就是根节点的值比两个子结点都小。

struct node{
    inline bool operator()(const int &x, const int &y){
        return x > y;
    }
};

算法导论之三】大根堆排序 1. 的概念(默认为二叉)     数据结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个结点与数组中存放该结点的那个元素对应。树的每一层都是填满的,最后一层可能除外(最后一层从一个节点的左子树开始填)。     二叉有两种:最大大根堆最小(小根)。在这两种中,结点内的数都要满足特性,其细节视的种类而定。在最大中,最大特性是指除了根以外的每个结点i,有:A 阅读详情

相关推荐

七大排序的个人总结(三)

排序(Heap): 要讲排序之前先要来复习一下完全二叉树的知识。 定义: 对一棵具有n个结点的二叉树按层序编号,如果编号为i(0 <= i <= n)的结点与同样深度的满二叉树编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。 如上面就是一棵完全二叉树。 我们主要会使用的的性质是父结点与子结点的关系: 标号为n的结点的左孩子为2 * n + 1(如...

weixin_34162401的博客 159

排序

                                                 一 初识 数据结构是一种数组,它可以视为一颗完全二叉树。如下图:         图中的树是数组,A={16, 14, 10, 8, 7, 9, 3, 7},圈内表示数,圈外红色的数字表示数组的下标。 array_size是数组的大小(此时是8),heap_size是构建的元素的多...

weixin_33744854的博客 143

排序——排序-大根堆(大顶)

1.小根 若根节点存在左子女则根节点的小于左子女的;若根节点存在右子女则根节点的小于右子女的2.大根堆 若根节点存在左子女则根节点的大于左子女的;若根节点存在右子女则根节点的大于右子女的3.结论 (1是一棵完全二叉树(如果公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。 (2)小根的根节点的是最小大根堆的根节点的是最大。 (3

laoniu_c的专栏 2万+

HashMap源码前的知识储备:数据结构+算法

HashMap的必备知识 map 集合的介绍 功能 数据结构 map的源码预备 1.map集合的介绍 collection的区别 (1)map存储元素是成对出现的,键是唯一的,可重复,实现类是hashmap,无顺序 (2)Collection存储元素是单独的 map集合的数据结构只针对键有效,无关 collection的数据结构针对元素有效 2.功能概述 添加功能 V put(K key,V value):添加元素。这个其实还有另一个功能 如果键是第一次存储,就直接存储元素,返回n

weixin_48682891的博客 403

数据结构

目录一、1. 概念2. 性质3. 结构二、的实现1. 算法实现:(1)向下调整算法2)向上调整算法(的创建)(3的插入(4)的删除(5)的排序2. 代码实现(小):(1的定义(2)交换(3)检查容量(4)向下调整(5)向上调整(6)的初始化(7)的创建(8)销毁(9)的插入(10)的删除(11)获取顶元素(12)判空(13排序(14)打印 一、 1. 概念 如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式

qq_34270874的博客 3万+

数据结构的实现以及建算法排序

哈喽,各位小伙伴大家好!上期给大家讲了树,二叉树以及。今天带着大家实现这个数据结构,以及排序。话不多说,咱们进入正题!向大厂冲锋!

大白的编程日记. 2002

数据结构算法】“”还能这样用_的应用

💛 前情提要💛本章节是的的相关知识~接下来我们即将进入一个全新的空间,对代码有一个全新的视角~以下的内容一定会让你对有一个颠覆性的认识哦!!!❗以下内容以的方式实现,对于来说最重要的是哦❗以下内容干货满满,跟上步伐吧~作者介绍:排序Top-K问题💡排序:本质为选择排序的一种排序便是利用这种数据结构的思想进行排序✊如果有同学不太熟悉,可点击⌈跳转⌋补充知识再出发呀🔥 思想:❓思考: 如何利用进行排序 假如排,我们利用进行排序的话:我们建好一个小后,因为小的特性为的数在根节点处(最上面),我们....

Dream_Y.ocean的博客 1182

数据结构的实现

目录 1、前言 的概念 的结构 2的实现 2.1、准备工作 创建结构 初始化 的打印 的销毁 建时间复杂度 2.2调整 的交换 向上调整算法 向下调整算法 2.3、核心功能 的插入 的删除 ...

bit_zyx的博客 2805

数据结构算法

1.1.的定义 是计算机科学中一类特殊的数据结构的统称,通常可以被看做是一棵完全二叉树的数组对象。 的特性: 1.它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。 2. 它通常用数组来实现。 具体方法就是将二叉树的结点按照层级顺序放入数组中,根结点在位置1,它的子结点在位置23,而子结点的子结点则分别在位置4,5,67,以此类推。 如果一个结点的位置为k,则它的父结点的位置为[k/2],而它的两个子结点的位置则分别

白大锅的博客,毕设WangLoveBai_999 1万+

数据结构算法

是计算机科学中一类特殊的数据结构的统称,通常可以被看做是一棵完全二叉树的数组对象。 如果一个结点的位置为k,则它的父结点的位置为[k/2],而它的两个子结点的位置则分别为2k2k+1。 每个结点都大于等于它的两个子结点 构造方法 Heap(int capacity):创建容量为capacity的Heap对象 public Heap(int capacity) { this.items= (T[]) new Comparable[capacity+1];

MARK19960120的博客 5127

数据结构 ——

是一种特殊的树形数据结构,称为“二叉”(binary heap)看它的名字也可以看出与二叉树有关系:其实就是一种特殊的二叉树的性质:中某个结点总是不大于或不小于其父结点总是一棵完全二叉树。

2301_78957570的博客 2988

数据结构】——的实现与算法

对比向上调整建,h-1层向下调整只需要移动1层,而向上调整需要移动h-1次因此向下调整是更优的建算法。插入一个数据后不再是小需要将新数据调整到合适的位置,所以的插入就是在数组插入数据再向上调整即可。剩下数据与顶数据比较,如果比顶数据大,那么替代顶进(覆盖顶数据然后向下调整)插入的过程其实就是建,在一个的末尾插入数据然后向上调整形成一个新的。Top—K问题:N个数中求最大的(最小的)前K个数据,一般N远大于K。<2>数据比顶数据大,覆盖调整之后形成一个新的小,再次比较。

2402_82668782的博客 2013

数据结构

是一种特殊的数据结构,它是一棵完全二叉树。把所有的元素按照完全二叉树的结构,按照层序遍历的顺序储存在一维数组中,如果该二叉树满足父节点小于等于子节点,叫做最小(小根);如果该二叉树满足父节点大于等于子节点,叫做最大大根堆)。​。

Flashing-C的博客 5012

数据结构-(Heap)

数据结构-(Heap) 我认识的1.建立在完全二叉树的基础2.排序算法的一种,也是稳定效率最高的一种 3.可用于实现STL中的优先队列(priority_queue)  优先队列:一种特殊的队列,队列中元素出栈的顺序是按照元素的优先权大小,而不是元素入队的先后顺序 4.两类:       a.最大:            ①根的大于左右子树的   ...

[SZU_Crayon] 2万+

数据结构(Heap)详解

是一种非常重要的数据结构,具有独特的性质高效的操作。它在排序、优先队列等算法应用中有着广泛的应用。通过对的深入理解掌握,我们可以更好地设计实现高效的算法,解决各种实际问题。

A Charmer 的博客 4429

数据结构的实现

的本质是一个二叉树,且总是一棵完全二叉树。。与二叉树的区别在于:对于这棵二叉树而言,任何一个子树根节点上的数据孩子节点上的数据之间是存在一种关系的。小根(min heap):任意节点的 ≤ 其子节点的大根堆(max heap):任意节点的 ≥ 其子节点的我们将二叉树的根节点称为“ 顶 ”,将底层最靠右的节点称为“ 底 ”。不难发现,对于大根堆(小根),顶元素的总是最大(最小)的。

2401_85054434的博客 1310

数据结构算法】——

树是一种非线性数据结构,由有限结点组成,具有层次关系。树的基本概念包括根结点、子树、父结点、子结点等。树的表示方法有多种,如孩子兄弟表示法,常用于存储树结构。二叉树是树的一种特殊形式,每个结点最多有两个子结点,分为左子树右子树。二叉树有满二叉树完全二叉树两种特殊形式。二叉树的存储结构包括顺序结构链式结构,顺序结构适合完全二叉树,链式结构则通过链表表示。是一种特殊的二叉树,具有完全二叉树的性质,常用于实现优先队列。的实现包括向上调整算法向下调整算法,分别用于插入删除数据时维护的性质。

qq_2778465975的博客 1172

数据结构简述

目录什么是向下调整建的应用 什么是 今天来谈谈数据结构中的,什么是呢?我的理解是,可以看作一棵逻辑上的完全二叉树,并可以通过数组保存的。 分为大,小就像一个金字塔一样,大就是越大的越往上,最大顶,每一个元素都大于等于它的左右孩子,小反之。 向下调整 以小为例,的向下调整就是当数组中只有需要调整的元素不满足条件,其他元素都满足小的条件了,就可以进行向下调整使之有序。 向下调整的思路就是:如果是叶子结点就不用调整了,找出孩子中最小的(一个孩子的话最小的就是左孩子了),

xxxxd_的博客 391
上一篇: 使用Coding pages搭建个人博客
下一篇: Moive-Pages
Cancelleds
博客等级 码龄8年 1107粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值