白话数据结构之【大小堆】

一、定义

定义:简言之,堆就是一棵完全二叉树

完全二叉树:整棵树除了最底层的叶节点之外,是填满的,而最底层的叶节点由左至右不得有空隙。
白话数据结构之【大小堆】_第1张图片

堆分类:小根堆(最小堆)、大根堆(最大堆)
白话数据结构之【大小堆】_第2张图片

二、堆排序

当父节点序号为i(i>=0),则左节点为2i+1,右节点为2i+2
若将结点v的编号记作i(v),则满足以下关系:
对于任意结点,则有:
1)若v有左孩子,则 i(leftChild(v)) = 2 * i(v) + 1;
2)若v有右孩子,则 i(rightChild(v))= 2 * i(v) + 2;
3)若v有父节点,则 i(parent(v)) = i(v)/2 - 1;

三、Java实现堆排序
四、参考文章

https://www.1024do.com/?p=3378
https://blog.csdn.net/u013384984/article/details/79496052
https://blog.csdn.net/MoreWindows/article/details/6709644

你可能感兴趣的:(数据结构,算法,Java基础)