分治法总结
分治法根据起思路分为三步
1.原问题分解子问题
2.求解子问题
3.返回子问题的答案,组合子问题的解得出原问题的解
attention:
1.分解子问题时,需要将原问题划分为不相交的子问题。
2.分解子问题时,常用思路为 原问题划分为左右两段
case1 原问题左右划分:
1.快排 1)将原数组划分为子问题(子数组)左右进行递归排序。 2)归位子问题的哨兵位置 3)最终得到原问题的解,即有序数组
2.第k大的数(半分治)。1)借用快排思想进行左 或 右递归查找 2)当子问题哨兵位置被找到,即找到子问题、原问题的解
3.数位交换 将32bit串 镜像颠倒。 1)将原数组划分为左右两段交换,对左右两端继续进行交换下去。。直到相邻两个bit进行交换