后续会有补充
堆
堆是一种数据结构,总是一棵完全二叉树,是使用数组存储的,是非线性的;并且要求树中所有的父亲都小于等于孩子(小根堆)/树中所有的父亲都大于等于孩子(大根堆)不一定要有序。
在选数时使用堆,效率很高。
堆排序
小根堆:
1.完全二叉树
2.树中所有的父亲都是小于等于孩子
大根堆:
1.完全二叉树
2.树中所有的父亲都是大于等于孩子
注意:不代表从小到大存或从大到小存
小根堆和大根堆的意义
堆排序。时间复杂度为(N*logN)。堆排序本质是一种选择排序,因为它能得出最大或最小到最顶,可以解决TOP-K问题。选出最大/最小的前几个
那么排升序是建大堆还是小堆呢?
很多人觉得是建小堆,实际上建大堆好一点,
如果每次都是用建堆选数据,整体时间复杂度为O(N*N),因为建堆,关系会乱,只能再建堆选数,如果非要这样,效率会很差,没有使用到堆的优势