树 是一种可以递归定义的数据结构
每个节点向下分n个小节点,可以无限细分:
每个节点最多往下开辟两个小节点的树叫二叉树。
满二叉树:每一层的节点都到最大值
完全二叉树:叶节点只出现在最下层和次下层,而且最后的细分层集中在最左侧
大根堆:每个节点都比下属的小节点大
小根堆:每个节点都比下属的小节点小
向下调整:假设要排列一个大根堆,从最上层向下比较,如果最上层小于下层数据,和下层最大的数据互换,直到实现大根堆的排列。
小根堆同理,从最上层开始向下比较,选和它有关下层最小的数据调到上层。
建立堆——得到堆顶部元素(最大元素)——去掉顶部 把最后一个元素放到顶部——重新调整——堆顶元素是第二大元素——重复3直到堆变空
构造堆的过程:从底层开始排列,从下到上排列整个过程,直到做完大根堆或者小根堆
(1)调整数组的函数(能实现“把较小的父节点和子节点中大数互换”):
(2)堆排序例
(3)实操
引入随机生成数 然后开始排序