武汉PHP培训
达内武汉民大中心

18062071755

热门课程

PHP有关堆的操作

  • 时间:2018-10-11 16:24
  • 发布:武汉php培训
  • 来源:互联网

堆是一个特殊的树数据结构。我们首先根据给定的数据构建堆。由于堆有严格的构建规则,所以我们每一步操作都必须满足这个规则。下面是堆的一些核心操作。

武汉php培训

创建堆

插入新值

从堆中提取最小值或最大值

删除一个值

交换

从给定的项或数字集合创建堆需要我们确保堆规则和二叉树属性得到满足。这意味着父节点必须大于或小于子节点。对于树中的所有节点,都需要遵守这个规则。同样,树必须是一个完全的二叉树。在创建堆时,我们从一个节点开始,并向堆中插入一个新节点。

当插入节点操作时,我们不能从任意节点开始。插入操作如下

将新节点插入堆的底部

检查新节点和父节点的大小顺序,如果它们是正确的顺序,停止。

如果它们不是正确的顺序,交换它们然后继续前一步的检查。这一步骤与前一步一起被称为筛分或上升,等等。

提取操作(最小或最大)即从堆中取出根节点。在此之后,我们必须执行下列操作以确保剩余节点然仍符合堆的特点。

从堆移动最后一个节点作为新根

将新根节点与子节点进行比较,如果它们处于正确的顺序,则停止。

如果不是,则将根节点与子节点交换(当是小根堆时为最小子节点,当大根堆时为最大子节点)并继续前面的步骤。这一步与前一个步骤一起被称为下堆。

在堆中,一个重要的操作是交换。现在我们将使用PHP7来实现二叉堆。

namespace DataStructure\Heap;

class MaxHeap

{

public $heap;

public $count;

public function __construct(int $size)

{

//初始化堆

$this->heap = array_fill(0, $size, 0);

$this->count = 0;

}

public function create(array $arr = [])

{

array_map(function($item){

$this->insert($item);

}, $arr);

}

public function insert(int $data)

{

//插入数据操作

本篇文章是有武汉php培训为您呈现,更多相关资讯尽在武汉达内!

马上预约七天免费试听课

姓名:

电话:

上一篇:2018年北京洪堡教育大会,达内教育集团总裁韩少云分享少儿编程
下一篇:武汉PHP培训:做网站就选php

达内与广西城市职业学院(本科)携手签约,共同培育技术技能型人才!

2018百度品牌数字资产榜揭晓,达内教育、可口可乐、海尔等上榜

校企融合达内携手宁夏财经职业技术学院联合培养高质量技能型人才

达内与浙江广厦建设职业技术学院携手签约,共建达内学院!

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊