分治策略:将原问题划分为n个规模较小而结构与原问题相似的子问题;递归的解决这些子问题,然后再合并这些结果,得到原问题的解。
分治模式在每一层递归上都有三个步骤:
分解:将原问题分解为一系列子问题
解决:递归的解决个子问题,若子问题足够小,则直接求解
合并:将子问题的结果合并成原问题的解
合并排序:
分解:将n个元素分成等两份
解决:用合并排序法对两个子序列递归的排序
合并两个已排序的子序列以得到排序结果
对子序列排序时,长度为1时递归结束。
算法分析:对一个算法所需要的资源进行预测。(内存、通讯带宽或计算机硬件等资源偶尔会是我们主要关心的)通常资源是指我们希望测度的计算时间。
实现算法之前确定实现技术的模型:通用的单处理器、随机存取机(RAM),该模型中的指令是一条一条执行的,没有并发操作。
RAM模型包含了计算机中的常见指令:
算数指令:加法、减法、乘法、除法、取余、向下取整、向上取整指令
数据移动指令:装入、存储、复制指令
控制指令:条件和非条件转移、子程序调用和返回指令
输入规模:与具体问题有关,有时指的是输入中的元素个数,如果是图,度量标准是边和节点数。
运行时间:在特定输入时,所执行的基本操作数或(步数)。
插入排序的算法分析:
INSERTION-SORT(A) cost times
1 for j <— 2 to length[A]