15 - 堆栈 - 大顶堆

前面我们学习了小顶堆,相信大家都已经有点概念了,今天来了解一下大顶堆。

大顶堆示意图

15 - 堆栈 - 大顶堆_第1张图片

 

堆数组存放的公式

我们用简单的公式来描述一下堆的定义就是:

大顶堆arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]

小顶堆arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]

 

下面就来看看大顶堆的C语言实现:

#include
#include 
 
 
//交换数组中两个元素
void swap(int* arr, int i, int m) 
{
    int temp = arr[i];
    arr[i] = arr[m];
    arr[m] = temp;
}

void heapify(int* a, int k, int index) 
{
    int min = index;

    while (1) 
    {
        if (index * 2 + 1 < k &a

你可能感兴趣的:(Windows,Linux,C/C++,高级编程,算法/数据结构,C语言高手编程修炼营,算法,数据结构,链表,栈,排序算法)