Heap(堆)
堆是一个经常被使用到的数据结构,LeetCode上相关的题有很多,如Ugly Number II,Merge K sorted Lists,Kth Largest Element in Array, Find Median from Data Stream
这里只写堆这个数据结构本身的实现,对其应用的题另外开辟一个专栏
- 堆是一个完全二叉树,即最后一层的结点肯定都是左部分全满的
- 堆一般情况下都是用数组表示,也叫Binary Heap(二叉堆)
- 堆有最大堆和最小堆,Python里面提供的模块heapq是其中的最小堆
- 堆排序的时间复杂度是O(nlgn),属于稳定且O(1)空间复杂度的排序算法