红黑树
红黑树起源
红黑树定义
红黑树属性

右倾斜旋转为左倾斜:保持对称的顺序、黑平衡

颜色翻转:




堆排序
时间复杂度O(nlogn),空间复杂度O(1)
- 将无序A数列构建一个堆,如最大堆。(Ο(n))
- 将堆进行max_heapify修正为最大堆。(Ο(log2n))
- 找到最大值元素A[1],即当前最大堆的跟节点。(Ο(1))
- 将A[1]和堆最后的元素A[n]进行交换。(Ο(1))
- 将元素A[n]撤出堆,减少堆大小。(Ο(1))
- 现在堆也许会违背最大堆属性,因此重复2-5步骤。(有n steps)
具体:
- 堆近似完全二叉树
分为小根堆(父节点≤左右儿子)和大根堆(父节点≥左右儿子)
可以用一维数组存储堆
- 建堆
以自底向上的方式,从i = n/2结点位置依次向上遍历进行堆调整操作
- 堆排序时间复杂度
- 建堆O(n)
- 由于交换根节点和最后的节点,再移除最后的节点,堆的大小不断减少,所有的堆调整操作时间复杂度:O(log1+log2+…+logn) = (log(n!)) ≈ O(nlogn)
最后堆排序的时间复杂度为Ο(n)
[MIT6.006] 4. Heaps and Heap Sort 堆,堆排序
时间复杂度:O(log1+log2+…+logn)=O(log(n!))=O(nlogn)
