当前位置: 首页 > news >正文

算法第二章实践作业

1.随机选择数组中的一个元素作为基准值,将数组划分为三部分:小于基准值的元素(左子数组)、等于基准值的元素(中间部分)、大于基准值的元素(右子数组)。若左子数组的长度 ≥ k,则第 k小的元素一定在左子数组中,递归处理左子数组;若左子数组长度 < k 且 左子数组长度 + 中间部分长度 ≥ k,则基准值就是第k小的元素;否则, k小的元素在右子数组中,递归处理右子数组,此时 k 需更新为 k - 左子数组长度 - 中间部分长度。当子数组长度为 1 时,直接返回该元素。
2.最好时间复杂度:O(n)。每次划分时,基准值恰好将数组分为大小均衡的两部分,递归深度为O(logn),每层处理的元素总数为O(n),因此总时间为O(n);
最坏时间复杂度:O(n²)。若每次划分选择的基准值是当前子数组中的最大或最小元素,会导致子数组规模仅减少1,此时递归深度为O(n),每层处理O(n)个元素,总时间为O(n²)。
3.分治法核心思想:分治法通过 “分解(将大问题拆分为相似子问题)→ 解决(递归处理子问题)→ 合并(子问题结果整合为原问题解)” 三步,将复杂问题简化。其关键在于子问题与原问题的相似性,以及划分后子问题规模的显著减小。分治法能有效降低问题复杂度,尤其适用于可均匀划分的问题,如快速排序、归并排序、二分查找,此时时间复杂度可从O(n²)降至 O(nlogn)或O(logn)。适合并行计算,子问题可独立处理。

http://www.jsqmd.com/news/19862/

相关文章:

  • 解决homebrew下载报错问题
  • 软考中级学习总结(5)
  • 软考中级学习总结(4)
  • 每日反思(2025_10_22)
  • docker: Error response from daemon: failed to set up container networking 解决办法
  • “化零为整”的智慧:内存池如何绕过系统调用和GC,构建性能的护城河
  • CSP-S36
  • 新学期每日总结(第13天)
  • 解决一台hp probook 430G3笔记本无法实现win10关机网络唤醒
  • P4765 [CERC2014] The Imp 解题笔记
  • 2025年工业三维扫描仪品牌实力榜:启源视觉稳居行业第一
  • 实验2 现代C++编程初体验
  • GCM(Galois/Counter Mode) 认证加密算法实现
  • 10.13-10.19学习做题笔记
  • yny计数题记录
  • 20232411 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • Lampiao 靶场
  • 【学习笔记】slope-trick
  • 2025.10.22
  • 有一云AI编辑器:2025年微信公众号排版的高效选择
  • 20232318 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • ubuntu 25.10 修改源 - ldx
  • pytorch学习笔记(1)
  • 20232404 2025-2026-2 《网络与系统攻防技术》实验二实验报告
  • 1020302118兰逸霏的第一次作业
  • MathType 7下载安装教程及激活教程wps嵌入教程(含下载+安装+汉化激活+安装包)
  • 论学习有感——驳学习(读书)无用论
  • 嵌入式软件分层架构设计 - lucky
  • DP 基础题乱做
  • 20232315 2025-2026-1 《网络与系统攻防技术》实验二实验报告