堆的存储一般都用数组来表示堆, 第i结点为子节点,则该i节点的父结点下标就为(i – 1) / 2。 第i节点为父节点时,它的左右子结点下标分别为2 * i + 1和2 * i + 2。 如第0个结点左右子结点下标分别为1和2。 大根堆排序的过程: 1. 首先,建立这个大根堆,大根堆使用数组表示的,所以父节点的个数, 最多为array.size()/2,数组的个数除以2. 2. 先建立一个大根堆交换的函数,head_ajust().该函数负责,父节点大于左右子节点。 3. 建立大根堆的时候,从父节点从size/2----到---0,以保证,每一个父节点的值,都大于左右子节点的值。 1.建立完之后,就是排序了。 ![]() ![]() |
|
来自: 雪柳花明 > 《C 笔试 算法题准备》