1.问题背景

杠铃增重问题

  • 每位参赛运动员向组委会提交排好序的三次试举重量
  • 为便于杠铃拆卸,组委会需对所有试举重量递增排序

杠铃增重顺序:125 130 132 123 127 129 117 121 126 116 120 122
问题:组委会如何根据试举重量安排杠铃增重顺序?

选择排序
  • 从待排序元素中迭代选出最小值并排序
  • 比较次数:???????? 次
插入排序
  • 依次将每个元素插入到已排序序列之中
  • 比较次数:???????? 次

杠铃增重问题

问题特点:局部有序
快速合并:比较两有序数组当前最小元素,将较小者逐一合入新数组
分而治之篇1--归并排序
后续策略:

  • 逐一合并:比较27次
  • 两两合并:比较24次
策略名称 4位选手 8位选手 16位选手
逐一合并 ???????? 次 ???????????? 次 ???????????? 次
两两合并 ???????? 次 ???????? 次 ???????????? 次

求解杠铃增重问题的两两合并策略对排序问题有何启发?


2.从杠铃增重问题到排序问题

问题输入变化

  • 完整数组输入
  • 局部有序缺失

两两合并策略如何适应问题输入的变化?

  • 解决输入变化:分解输入

分而治之篇1--归并排序


3.归并排序

  • 1945年,冯·诺伊曼提出归并排序
  • 算法流程
    • 将数组???? [???? , ????] 排序问题分解为???? [???? ,????/????]和???? [????/????+ ???? , ???? ]排序问题      分解原问题
    • 递归解决子问题得到两个有序的子数组           解决子问题
    • 将两个有序子数组合并为一个有序数组           合并问题解

归并排序名字由来:分解数组,递归求解,合并排序      分而治之

分解原问题        原问题分解成多个子问题
解决子问题        递归地求解各个子问题
合并问题解        将结果合并为原问题解


4.复杂度分析

  • 递归树法:用树的形式表示抽象递归

分而治之篇1--归并排序


小结

分而治之篇1--归并排序

相关文章:

  • 2021-08-27
  • 2021-06-05
  • 2022-12-23
  • 2022-12-23
  • 2021-12-20
  • 2021-11-27
  • 2021-03-26
猜你喜欢
  • 2021-09-26
  • 2021-08-01
  • 2022-12-23
  • 2021-03-30
  • 2021-04-15
  • 2022-12-23
  • 2021-12-03
相关资源
相似解决方案