第三篇:分治算法

news/2024/11/29 2:34:28/

第三篇:分治算法

  • 1. 分治算法简介
  • 2. 递归算法框架模板
  • 3. 分治演示代码
  • 4. 递归算法经典案例

分治算法的思想是将大问题分解成小问题,解决完一个一个小问题便解决了大问题。比如,我们想从杭州出发到徐州,可以分解成杭州到南京,然后南京再到徐州,就是这样不断分解下去,找到最小的路线拼接而成就解决了大问题。

在这里插入图片描述

1. 分治算法简介

分治法非常像递归算法,都是不断分解成容易求解的小问题最后解决一个大问题。所以分治算法经常伴随着递归算法,如果还不懂递归的朋友们可以看我上一篇文档:第二篇:递归算法。
二分查找演示:https://algorithm-visualizer.org/branch-and-bound/binary-search
在这里插入图片描述
这里我们以最常见的二分查找为例(依次分解左边部分和右半部分进行判断),
可以看到有左右两个指针,然后根据中间值来判断指针的走向。
初始值left在1的位置,right在9的位置,
中间值为:5。
要查找的值为3,和中间值对比,比5小于是:
left还是在1的位置,right就要在5的位置之前到4。
以此类推,最终就会找到3这个值。

2. 递归算法框架模板

分解:将大问题拆解成容易解决的小问题。
解决:如果问题足够小容易解决就直接返回,否则继续拆解。
合并:将各个子问题的解合并为原问题的解。

可以看到,第一步需要先分解。
要找到从大问题分解到小问题的思路,
这里必须要构造一个有序的数组才能继续二分查找。
然后一半一半的去解决。最终得到最终结果。
有点和递归类似。

3. 分治演示代码

这里以二分查找为例

public class BinarySearch {public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9};int index = binarySearch(array, 3);System.out.println("查找结果的下标: " + index);}/*** 二分查找** @param array     有序数组* @param searchNum 要查找的数* @return 下标*/private static int binarySearch(int[] array, int searchNum) {int left = 0;int right = array.length - 1;int mid;while (left <= right) {mid = (left + right) / 2;if (searchNum < array[mid]) {right = mid - 1;} else if (searchNum > array[mid]) {left = mid + 1;} else {return mid;}}return -1;}
}

4. 递归算法经典案例

1、二分搜索
2、汉诺塔
3、快速排序
4、合并排序
5、大整数乘法

LeetCode分治算法题目:
https://leetcode.cn/problemset/all/?topicSlugs=divide-and-conquer&page=1


http://www.ppmy.cn/news/409236.html

相关文章

主板硬件资料

捷波NF36主板 https://www.jetwaycomputer.com/NF36.html

《中国计算机报 停刊,《中国计算机报》硬件之星“最具超值”产品:捷波J-865PEDA...

尽管众多的厂商已经推出了Intel915芯片的主板&#xff0c;但目前看来基于Northwood核心的老P4&#xff0c;赛扬还有不少的销量&#xff0c;加上478针脚Pescott核心的新P4和Celeron D的热销&#xff0c;让老865平台成为了现在市场上中端的主力成员。这其中865PE的主板应该说是现…

Android进阶 四大组件的工作过程(四):ContentProvider的工作过程

Android进阶 四大组件的工作工程&#xff08;四&#xff09;&#xff1a;ContentProvider的工作过程 导语 本篇是介绍四大组件的最后一篇文章&#xff0c;前三篇文章里我们已经介绍了Activity&#xff0c;Service以及Broadcast的工作流程&#xff0c;那么这篇文章我们就来介绍…

不花冤枉钱,推荐几个装机方案

不花冤枉钱&#xff0c;推荐几个装机方案 最近有几个朋友要装机&#xff0c;有上网玩的&#xff0c;有做j2ee的&#xff0c;我给出几个配置方案&#xff0c;本人比较喜欢3A平台&#xff0c;高性价比&#xff0c;升级容易&#xff0c;兼容性好。推荐这几款均不是游戏玩家的配置&…

USB接口供电不足以及相关故障

USB接口供电不足以及相关故障原文&#xff1a;晓天 天极网事由&#xff1a;   今天本来休息&#xff0c;可是公司打电话说是有一客户急需上门&#xff0c;原因是客户新买了一个移动硬盘&#xff0c;接在自己的笔记本后能够发现新硬件&#xff0c;可“我的电脑”里面却没有盘…

32位CPU的机器只能支持4GB的内存吗

现在内存条都是白菜价的时代&#xff0c;很多人手中都是4G大内存了。但是普通的32位操作系统只能认3G多的内存&#xff0c;有很多都是给白白的浪费掉了。近来很多人说使用补丁&#xff0c;能使32位的系统支持4G大容量内存。事实果真如此吗&#xff1f; 一&#xff0c;cpu的寻址…

vagrant简单学习使用

2019独角兽企业重金招聘Python工程师标准>>> 1.安装vagrant 旧版本的vagrant可以在http://downloads.vagrantup.com/下载&#xff0c;支持的系统平台有mac,debian/ubuntu, centos,windows。如果要下载最新版本的vagrant&#xff0c;需要FQ。大家各自找FQ工具。 2.下…