算法设计与分析——分治法

归并排序

算法流程:

算法设计与分析——分治法_第1张图片

 归并排序: 分解数组,递归求解,合并排序

步骤

1.首先将待排序的数组不断两两分解直至每一组只有一个元素

算法设计与分析——分治法_第2张图片

 2.构建有序数组:两两合并

算法设计与分析——分治法_第3张图片

  伪代码

算法设计与分析——分治法_第4张图片

 算法设计与分析——分治法_第5张图片

 算法设计与分析——分治法_第6张图片

 算法设计与分析——分治法_第7张图片

 递归式求解

递归树法

算法设计与分析——分治法_第8张图片

 代入法

算法设计与分析——分治法_第9张图片

 主定理法

最大子数组问题

算法设计与分析——分治法_第10张图片

 算法设计与分析——分治法_第11张图片

 算法设计与分析——分治法_第12张图片

 算法设计与分析——分治法_第13张图片

 算法设计与分析——分治法_第14张图片

  算法设计与分析——分治法_第15张图片

快速排序

步骤

  1. 划分:选定一个记录作为轴值,以轴值为基准将整个序列分为两个子序列,左侧数小于轴值,右侧大于
  2. 求解子问题:对每一个子序列进行递归处理
  3. 合并:对于子序列的排序是就地进行,不需要任何操作

算法设计与分析——分治法_第16张图片

 时间复杂度O(N)算法设计与分析——分治法_第17张图片

 算法设计与分析——分治法_第18张图片

 算法设计与分析——分治法_第19张图片

你可能感兴趣的:(数据结构)