堆排序以及实现
一,堆的概念
我们会接触到很多不同的关于堆的概念,这里我们要讲的是数据结构中的堆
1.概念:堆是一种基于完全二叉树的特殊数据结构
2.通常有两种数据类型
a.大顶堆(Max-Heap)
根节点大于他的孩子节点
b.小顶堆(Max-Heap)
孩子节点大于他的根节点
二,代码逻辑
1.插入逻辑
我们之前学过二叉树,如果从索引1开始按照从上到下,从左到右的顺序将元素存入一张表,那他们的父节点、当前节点、左孩子、右孩子的索引满足规律[i/2,i,2i,2i+1]
在代码实现过程中就可以用上这一规律,下图是小顶堆的实现逻辑
2.删除逻辑
假如要删除上图中的1,删除后的效果为下图2
图1
图2