Big O Notation

Screen Shot 2021-08-30 at 9.49.39 am.png
n! >> 2^n >> n^2 >> nlogn >> n >> logn >> 1

排序算法

排序算法 Best Average Worst Space-Worst Note
quicksort-快排 O(nlogn) O(nlogn) O(n^2) O(n) space是递归调用的栈的空间
mergesort-归并 O(nlogn) O(nlogn) O(nlogn) O(n) 归并的空间复杂度就是那个临时的数组和递归时压入栈的数据占用的空间,O(n+log) == O(n)
heapsort-堆排 O(nlogn) O(nlogn) O(nlogn) O(1) 因为堆排序是就地排序,空间复杂度为常数:O(1)
bubblesort-冒泡 O(n^2) O(n^2) O(1) 比较相邻的元素
insertionsort-插入 O(n) O(n^2) O(n^2) O(1) 左边是排序好的,将新元素插入。
selectionsort-选择 O(n^2) O(n^2) O(n^2) O(1) 从剩下的里面选出最大/最小,放入尾部。

基础数据结构

Screen Shot 2021-08-30 at 1.32.59 pm.png

建堆(heapify) : O(n)
如何在数组上原地建立最大/小堆(heapify)

  • 从后往前更新parent和children,使其valid

    图算法

    节点个数: n,边数: m
    DFS
    BFS
    Dijkstra
    邻接矩阵
    邻接链表