洋仔的博客 洋仔的博客
首页
  • 个人心法总结

    • 价值心法
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • iOS基础知识
  • 前端
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 投资体系
  • 毛选
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

洋仔

奋斗的小青年
首页
  • 个人心法总结

    • 价值心法
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • iOS基础知识
  • 前端
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 投资体系
  • 毛选
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术文档

  • GitHub技巧

  • Nodejs

  • 博客搭建

  • iOS基础知识

    • iOS底层相关

    • Runloop系列

    • Runtime系列

    • 内存管理系列

    • Block系列

    • 线程系列

    • KVC跟KVO系列以及通知中心

    • UI系列

    • 离屏渲染系列

    • 组件化系列跟架构

    • OC跟webview交互系列

    • 持久化系列

    • APP编译系列

    • APP性能优化系列

    • cocoapods系列

    • swift系列

    • Git系列

    • 网络相关

    • 三方库系列

    • 系统原理

    • 总结系列

    • 算法系列

      • 构建自己的算法体系
      • 算法入门
      • 时间复杂度跟空间复杂度
      • 递归算法
      • 分治算法
        • 2.2.1 什么是分治算法
          • 分治法的设计思想:
          • 2.2.2 分治算法的适用场景
          • 2.2.3 分治算法模板
      • 动态规划算法
      • 贪心算法
      • 回溯算法
      • 枚举算法
      • 排序算法
      • 双指针算法技巧
    • 数据结构系列

  • 前端

  • 技术
  • iOS基础知识
  • 算法系列
洋仔
2024-10-19
目录

分治算法

# 2.2 分治算法

# 2.2.1 什么是分治算法

# 分治法的设计思想:

将难以直接解决的大问题分解成一些规模较小的相同问题,请注意这个相同,以便与动态规划进行区别使用。 分治算法的基本步骤:

分解(Divide): 将原始问题分解为多个相同或相似的子问题。这一步通常涉及将问题划分成更小的规模,以便于处理。 解决(Conquer): 逐个解决每个子问题。对于小规模的子问题,可以直接求解。 合并(Combine): 将各个子问题的解合并,得出原始问题的解。这一步确保子问题的解能够有效地组合成原始问题的解。

# 2.2.2 分治算法的适用场景

分治算法适用于:

问题可以被分解为更小的相同或相似的子问题进行求解的场景

一些常见的应用场景包括:

  • 归并排序(Merge Sort):归并排序是一种经典的排序算法,它利用了分治思想。该算法将一个大的排序问题分解为多个小的排序子问题,分别解决后再将它们合并起来,得到整体有序的结果。

  • 快速排序(Quick Sort):快速排序也是一种常见的排序算法,同样基于分治思想。它通过选取一个基准元素,将数组划分为两个子数组,然后分别对这两个子数组进行排序,最终得到有序结果。

  • 最大子数组和问题:这个问题要求在一个整数数组中找到一个连续的子数组,使得子数组的元素和最大。分治算法可以将问题分解为三种情况:最大子数组在左边、最大子数组在右边,或者跨越了数组中点。然后,将这三种情况的解合并,得到全局最优解。

# 2.2.3 分治算法模板

# 2.2.4 分治算法详解

# 1.归并排序
# 2.快速排序

快排思想:

  • 以第一个元素为中枢,中枢左边元素要小于中枢,中枢右边元素要大于中枢。
  • 使用双指针,low指针遇到第一个大于中枢值则停止,hign指针遇到第一个小于中枢值则停止,交换两者位置,之后继续遍历,直到low >= hign。
  • 递归左右两边。
# 3.最大子数组和
编辑 (opens new window)
上次更新: 2024/10/23, 23:26:17
递归算法
动态规划算法

← 递归算法 动态规划算法→

最近更新
01
数组
10-25
02
数组双指针系列之对撞指针
10-25
03
数组双指针系列之快慢指针
10-25
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式