分治思想:大问题拆成小问题
分治(Divide and Conquer)是计算机科学中最强大的思想之一。归并排序、快速排序、二叉树遍历……它们的背后都是分治。
一、什么是分治?
分治:把一个大问题拆成若干个规模更小的同类子问题,递归地解决子问题,再把子问题的解合并成原问题的解。
三个步骤:
- 分(Divide):把问题拆成子问题
- 治(Conquer):递归地解决子问题
- 合(Combine):合并子问题的解
二、生活中的例子
整理房间
- 分:把房间分成4个区域(书桌区、衣柜区、床区、地面区)
- 治:分别整理每个区域
- 合:所有区域整理好了,房间就整洁了
大扫除
- 分:全班分成4组
- 治:每组负责一个区域
- 合:各组完成后,全班大扫除结束