堆的方法

方法三:最小堆维护法

这个问题嘛……事实上是有的。这个方法能够大幅度降低总比较次数,称之为最小堆维护法:

第1步:先利用前10000个数字,搭建一个元素个数为1万的最小堆。

有同学可能会问,什么叫做最小堆呢?在这里解释一下:

首先,什么是堆?

在计算机领域中,堆这个概念与生活中的有一点点类似,一般的堆也是上面窄下面宽的结构。堆结构,非常类似圆木堆放的结构,充满大自然的气息。
堆的方法_第1张图片
堆结构,可能源自圆木木堆的灵感

堆(heap)是一种基于树(tree)的特殊的数据结构。堆有两种形式,分别是最大堆(max heap)和最小堆(min heap)。在堆顶的节点则被称为根节点。

我们关心最小堆就可以了。最小堆中,如果节点 A 是节点 B 的父节点,节点 A 中的键值必定小于或者等于节点 B 中的键值。根节点是堆的最小值。

堆的形式有非常多,不过堆的最常见实现形式是二叉堆(binary heap),最小二叉堆一般也是被直接简称为最小堆,因此我们只需要理解二叉堆即可。我们可以画一个最小二叉堆的例子出来感受一下:
堆的方法_第2张图片

你可能感兴趣的:(Computing,5G,Machine,learning)