五大基本算法——分治法

作者: 无问o | 来源:发表于2019-12-10 17:03 被阅读0次

一、基本思想

将一个大规模的问题均等分为多个独立相同的规模更小的子问题,进行分别求解,分而治之,然后合并成大问题的解得到最终结果。

经研究证明,在使用分治法设计算法时,最好让小问题的规模大致相同,这种思想为“平衡子问题”思想,研究表明这样做对算法的效果有很大的帮助。

二、基本步骤

1、分解:将一个难以解决的大问题分割成一系列规模较小的子问题,这些子问题相互独立,且与原问题相同。

2、求解:递归求解子问题,当问题足够小时则直接求解。(规模缩小到一个或者两个时)

3、合并:将子问题的解合并为原问题的解。

三、分治法的适用条件

在以下四种情况都满足的情况下,最好考虑分治算法:

1、该问题可以分解为若干个规模较小的子问题。(才能用步骤一,分解)

2、该问题所分解出的子问题是相互独立的。(才能用步骤一,分解)

3、该问题规模缩小到一定的规模时可以直接求解。(才能用步骤二,求解)

4、利用子问题的解可以合并为原问题的解(才能用步骤三,合并)

四、分治法与快速排序

分治法可以运用于快速排序中,作为一种改进策略。(选取划分元)

利用分治法可选取非常合理、平衡的划分元

1:将元素个数n除以5进行分组,分得n/5组
2:5组分别排序,取中位数
3:将5组的中位数组成集合,再排序取中位数,将其作为划分元

思路:利用快排,但只对划分出的两个子数组之一进行递归处理,利用上述方法选取中位数的中位数作划分元进行排序。最后选出某一子数组中满足要求的元素。

相关文章

  • 五大常用算法之一:分治算法

    五大常用算法之一:分治算法 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就...

  • 算法与数据结构

    五大常用算法之一:分治算法 五大常用算法之二:动态规划算法 五大常用算法之三:贪心算法 五大常用算法之四:回溯法 ...

  • 五大基本算法——分治法

    一、基本思想 将一个大规模的问题均等分为多个独立相同的规模更小的子问题,进行分别求解,分而治之,然后合并成大问题的...

  • 3.一步一步分解快排

    1.原理 Quick Sort 属于交换排序,是对冒泡算法进行的改造。 基本原理:分治法和填坑法 分治法:首先将问...

  • 分治法(Divide-and-Conquer Algorithm

    上次给大家带来了分治法的基本介绍和基本思想,今天我们继续来看分治算法的几个经典例子。 **01 ** 快速排序 1...

  • 五大常用算法详解

    五大常用算法 分治法 基本思想 将一个问题,分解为多个子问题,递归的去解决子问题,最终合并为问题的解 适用情况 ...

  • 3.1 分治法介绍及关键点解析

    Chapter3: 更好的查找与排序算法 1. 分治法介绍及关键点解析 什么是分治法 基本思想 将原问题划分为若干...

  • Divide and Conquer

    算法之 分治法 Divide and Conquer 分治法: 分治法的设计思想是:将一个难以直接解决的大问题,分...

  • 所有实验

    实验一 实验目的与要求:理解分治法的基本思想和设计方法。 实验题目: 1.实现基于分治法的归并排序算法. 2.实现...

  • 互联网大厂常考算法及套路深度解析

    常考算法 暴力法 回溯法 分支限界法 分治法 动态规划 贪心法 暴力法 也称枚举法、穷举法、蛮力法。 基本思想: ...

网友评论

    本文标题:五大基本算法——分治法

    本文链接:https://www.haomeiwen.com/subject/ktpggctx.html