1. 程式人生 > >問題解決思想方法論: 分而治之 (Divide and Conquer)

問題解決思想方法論: 分而治之 (Divide and Conquer)

問題解決思想方法論: 分而治之 (Divide and Conquer)

“分而治之”( Divide and conquer)方法(又稱“分治術”) ,是有效演算法設計中普遍採用的一種技術。

所謂“分而治之” 就是把一個複雜的演算法問題按一定的“分解”方法分為等價的規模較小的若干部分,然後逐個解決,分別找出各部分的解,把各部分的解組成整個問題的解,這種樸素的思想來源於人們生活與工作的經驗,也完全適合於技術領域。諸如軟體的體系結構設計、模組化設計都是分而治之的具體表現。

分而治之方法與軟體設計的模組化方法非常相似。為了解決一個大的問題,可以:

  1. 把它分成兩個或多個更小的問題;
  2. 分別解決每個小問題;
  3. 把各小問題的解答組合起來,即可得到原問題的解答。小問題通常與原問題相似,可以遞迴地使用分而治之策略來解決。分而治之方法可以用於實現不同的排序方法,這裡介紹兩種排序法:快速排序(quick sort)和歸併排序.