算法第二章作业

1.自然语言描述:该算法借鉴快速排序的分治思想,核心是通过 "划分" 操作逐步缩小查找范围,无需完全排序数组即可找到第 k 小的元素(假设 k 从 1 开始计数)。
步骤如下:
选择基准元素:从当前数组(或子数组)中任选一个元素作为基准。
划分操作:将数组分为两部分,左部分元素均小于等于基准,右部分元素均大于基准。记录基准元素在划分后数组中的位置pos。
判断与递归:
若pos == k,则基准元素就是第 k 小的数,直接返回。
若pos > k,则第 k 小的数在左部分,递归在左部分查找第 k 小的数。
若pos < k,则第 k 小的数在右部分,递归在右部分查找第k - pos小的数(因左部分已有pos个元素小于目标)。
终止条件:当子数组长度为 1 时,直接返回该元素(此时必为目标)。
2.最好时间复杂度:O(n)(累加n + n/2 + n/4 + ... ≈ 2n)。
最坏时间复杂度:O(n²)(累加n + (n-1) + ... + 1 ≈ n²/2)
3.通过本章对分治法的系统学习,我深刻意识到它不仅是一种核心的算法设计技术,更是一种极具价值的问题解决思维范式。它教会我们,面对复杂棘手的问题时,不必急于求成、试图一蹴而就,而应主动寻找合理的分解维度,将庞大的问题拆解为若干个规模更小、逻辑更清晰的子问题,再通过逐一攻克子问题、整合结果,最终高效解决原问题。

posted @ 2025-11-02 20:42  zizi006  阅读(5)  评论(0)    收藏  举报