什么是分而治之?

菜园前端
• 阅读 458

原文链接:https://note.noxussj.top/?source=helloworld


什么是分而治之?

在我们前面有学习过一系列数据结构、以及相关的一些算法,包含排序、搜索算法。而本次学习的分而治之它不是数据结构,也不是一种算法,而是算法设计中的一种方法,可以理解为是一种思想。我们可以利用这种思想去设计很多种算法。

分而治之是将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将结果合并以解决原来的问题。主要分成三个部分,分别是 "分"、"递归解决"、"合"。

基础案例

场景一

归并排序

  • 分:把数组从中间一分为二
  • 解:递归地对两个子数组进行归并排序
  • 合:合并有序子数组

首先它会把一个大的数组拆分成两个小的数组,再分别对每个小数组又进行拆分成两个小数组,以此类推,最后把单个元素的小数组全部进行合并并排序,最后组成一个大数组从而解决了问题。

归并排序是一个典型的分而治之思想的应用。

场景二

快速排序

  • 分:选基准,按基准把数组分成两个子数组
  • 解:递归地对两个子数组进行快速排序
  • 合:对两个子数组进行合并

步骤如同归并排序类似。

场景三

二分搜索同样具备 "分"、"解"、"合" 的特性。

点赞
收藏
评论区
推荐文章
一只编程熊 一只编程熊
3年前
ACM金牌选手整理的【LeetCode刷题顺序】
算法和数据结构知识结构图首先,了解算法和数据结构有哪些知识点,在学习中形成大局观,对学习和刷题十分有帮助。下面是我花了一天时间整理的算法和数据结构的知识结构,大家可以看看。<imgsrc"https://tva1.sinaimg.cn/large/008i3skNly1gsbvbwd5u1j30ys0u0tl6.jpg"alt"image202107
Wesley13 Wesley13
3年前
java 数据结构(五):数据结构简述
1.数据结构概述数据结构(DataStructure是一门和计算机硬件与软件都密切相关的学科,它的研究重点是在计算机的程序设计领域中探讨如何在计算机中组织和存储数据并进行高效率的运用,涉及的内容包含:数据的逻辑关系、数据的存储结构、排序算法(Algorithm)、查找(或搜索)等。2.数据结构与算法的理解程序能否快速而高效地完成预定的任务,
Souleigh ✨ Souleigh ✨
4年前
学完了C++语法之后该学什么??(数据结构与算法篇)
数据结构与算法数据结构与算法,我就不想多说了,重要性不用说。应届生秋招和春招最大的优势估计就是数据结构与算法的掌握了。上面三门课程的学习,基本也都是离不开数据结构的,对于如何学习数据结构与算法,我觉得可以在写一篇文章了,所以数据结构与算法的学习,我这里不写了。论面试,我觉得 操作系统计算机网络数据库 数据结构算法 这四大块是问的最多的,所以我写的
Wesley13 Wesley13
3年前
Java数据结构和算法(一)——简介
本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子。  编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱。一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数据结构和算法的人也能编程。但是如果一个开车的人懂变速箱的原理,比如降低速度来获得更大的牵引力,或者通过降低牵引力来获得更快的行驶速度。那么爬坡时使用1档,
菜园前端 菜园前端
1年前
什么是冒泡排序
原文链接:什么是冒泡排序(bubbleSort)?冒泡排序是所有排序算法中最简单的一种,当然也是性能最差的一种。冒泡排序的思想其实很简单,就如它的名字一样在水中"冒泡"。水中有很多散乱的小气泡,然后一个个气泡往水面上冒出。例如一组无序的数组,最左边就是水底
菜园前端 菜园前端
1年前
什么是贪心算法?
原文链接:什么是贪心算法?贪心算法是算法设计的一种方法。期盼通过每个阶段的局部最优选择,从而达到全局的最优。但结果不一定是最优的。基础案例场景一零钱兑换现有硬币1元、2元、5元,需要用最少的硬币数量凑够11元。利用贪心算法实现,优先考虑最好的结果就是面值为