递归、master公式与归并排序(merge)思想

额外空间复杂度 O(N)、O(1)

递归:

函数就是系统在帮你压栈(变量,执行位置,指针等),保存现场,还原现场

遇到一个子问题,压一次栈

任何递归行为,都可以改成非递归

分析复杂度:

父问题样本量,子问题样本量,子问题发生次数,除去子过程调用外,剩余过程的时间复杂度


子问题划分规模需要是一样的,才可以用master公式

特例,后面不是整数次幂,需要用数学方法?

归并排序:

左侧先排好,右侧再排好,整体再排好(外排序,辅助数组

T(n)=2T(n/2)+O(N)

总样本量为奇数时怎么办?不考虑常数,只考虑规模,等规模子问题即可

外排序

归并排序:O(N*logN):分治思想,额外空间复杂度O(N)

小和问题、逆序列和问题:

最笨的方法一般都是遍历的方法

左大右小:

小和问题,反过来想,当前数的右侧有哪些数比这个数大

利用merge,help一直是一样的,动态申请的,额外的空间复杂度

技术问题,缺乏练习

溢出与不溢出,位运算的常数时间比算术运算好

归并排序为什么快?利用了之前的比较!减少重复比较!

思想!!!

猜你喜欢

转载自blog.csdn.net/yinyang_ddl/article/details/88547219
今日推荐