堆排序、大顶堆和小顶堆原理介绍
引言
堆(Heap)是一种特殊的完全二叉树结构,广泛应用于计算机科学中,特别是在排序算法和优先队列的实现中。堆可以分为大顶堆(Max Heap)和小顶堆(Min Heap)。本文将详细介绍堆排序的原理,以及大顶堆和小顶堆的概念、特性,并通过具体例子更好地理解这些概念。
1. 堆的基本概念
1.1 定义
堆是一种特殊的完全二叉树,满足以下性质:
- 完全二叉树:除了最后一层外,其他每一层都被完全填充,并且所有节点都尽可能靠左排列。
- 堆序性:每个节点与其子节点之间满足特定的关系,具体取决于堆的类型(大顶堆或小顶堆)。
1.2 大顶堆(Max Heap)
在大顶堆中,每个节点的值都不小于其子节点的值。因此,堆顶(根节点)始终是堆中的最大元素。
性质
对于任意节点 i i i,如果它有左子节点 2 i + 1 2i+1 2i+1 和右子节点 2 i + 2 2i+2 2i+2,则满足:
- A [ i ] ≥ A [ 2 i + 1 ] A[i] \geq A[2i+1] A[i]≥A[2i+1]
- A [ i ] ≥ A [ 2 i + 2 ] A[i] \geq A[2i+2]