堆排序
1. 堆的定义:
在一颗完全二叉树中,每一个根节点的值均大于(或小于)其左右子树根节点的值,被称为堆。堆分为两种类型:大根堆和小根堆。
其中每一棵子树的根节点的值大于等于左右子树节点的值,被称大根堆。如果是每个节点的值均小于等于左右节点的值,被称为小根堆。
2. 堆排序的过程:
首先,将需要排序的数组映射成一个完全二叉树。“映射”在这里是指完全不需要构建另外的数据结构,只需要把数组“想象”成一棵完全二叉树。
怎么做呢?想想看,一个完全二叉树的顺序表示就是用数组实现的。所以只要逆过来看就可以:数组中每一个元素对应一个节点,对于一个下标为n的节点,其左孩子的下标为2*n+1,右孩子2的下标为2*n+2,记住这个映射关系就可以。(待续)
原文链接:https://blog.csdn.net/qq_41219157/article/details/123306783
浙公网安备 33010602011771号