一、分而治之思想
1.具体思想
- 分解步骤:将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小
- 解决步骤:递归地求解出子问题。如果子问题的规模足够小,则停止递归,直接求解
- 合并步骤:将子问题的解组合成原问题的解。
2.递归排序
递归排序其实就是分而治之思想的一种表现
- 分解:分解待排序的n个元素的序列成各具n/2个元素的两个子序列
- 解决:使用归并排序递归地排序两个子序列
- 合并:合并两个以排序的子序列以产生以排序的答案
- 当待排序的序列长度为1时,递归“开始回升”,在这种情况下不要做任何工作,因为长度为1的每个序列都已排好序
二、java实现
1、代码实现
1 | package com.wangqd.sort; |
2、时间复杂度
时间复杂度为nlgn