额外空间复杂度 O(N)、O(1)
递归:
函数就是系统在帮你压栈(变量,执行位置,指针等),保存现场,还原现场
遇到一个子问题,压一次栈
任何递归行为,都可以改成非递归
分析复杂度:
父问题样本量,子问题样本量,子问题发生次数,除去子过程调用外,剩余过程的时间复杂度
子问题划分规模需要是一样的,才可以用master公式!
特例,后面不是整数次幂,需要用数学方法?
归并排序:
左侧先排好,右侧再排好,整体再排好(外排序,辅助数组)
T(n)=2T(n/2)+O(N)
总样本量为奇数时怎么办?不考虑常数,只考虑规模,等规模子问题即可
外排序
归并排序:O(N*logN):分治思想,额外空间复杂度O(N)
小和问题、逆序列和问题:
最笨的方法一般都是遍历的方法
左大右小:
小和问题,反过来想,当前数的右侧有哪些数比这个数大
利用merge,help一直是一样的,动态申请的,额外的空间复杂度
技术问题,缺乏练习
溢出与不溢出,位运算的常数时间比算术运算好
归并排序为什么快?利用了之前的比较!减少重复比较!
思想!!!