• 二叉堆


    二叉堆是一个完全二叉树,分小根堆与大根堆

    小根堆:所有的父节点都比其子节点

    大根堆:所有父亲节点都比其子节点大(感觉自己在说废话)

    以下的操作都相对于小根堆

    上浮(向堆中加数,但保持小根堆的性质)操作:

    设:(这个节点的小标为i) 与自己的父亲节点进行比较,因为是完全二叉树,所以其父亲节点的下标为i/2,依次进行比较,如果大了就交换这两点的信息

    下沉(删除堆的跟节点,并保持堆的性质)操作:

    将堆顶元素切换成堆尾元素,再下沉该元素,与其子节点比较取最小值,交换两点信息,直到下沉到叶子节点或到对应位置时结束操作

    如何用堆反复求出一组数的中位数:

    用两个堆维护两组数,一个小根堆,一个大根堆,保证两堆中的元素个数的差值为1,当元素差值为2的时候就将大根堆的堆顶元素放进小根堆中(所有元素一开始都加进大根堆)

    然后遇到要输出中位数时,大根堆根节点即为中位数

    瑞瑞的木板&合并果子(其实是为了凑字数才写的)

    建立一个小根堆,当堆内元素大于等于2时,取最小的两个值合并(取根节点,删除,再取根节点),再将合并的值添回小根堆,反复操作(好像说完了)

    (看到袁某人放了两张图来解释,突然有点想效仿一下).....

    (算了,某“伟”人曾说过:博客自己看懂就行了,别搞的花里胡哨)

  • 相关阅读:
    单细胞测序 RNA velocity | RNA速率
    单细胞测序的应用
    Centos7.4升级到Centos7.7
    K8S部署Redis Cluster集群(三主三从模式)
    K8S部署Nacos集群
    K8S部署Kafka界面管理工具(kafkamanager)
    K8S部署Kafka集群
    K8S部署RocketMQ集群(双主双从+同步模式)
    Android Studio/IDEA Gradle wrapper/tools/plugins config errors
    Android API Level对应Android版本一览表
  • 原文地址:https://www.cnblogs.com/qyh2003/p/9108921.html
Copyright © 2020-2023  润新知