第二章作业
一、找最小的数的分治算法:
分治算法找最小数的核心是 “分而治之”:
1、分解:将包含n个元素的数组分成两个大致相等的子数组。
2、递归求解:分别递归地找出这两个子数组中的最小数。
3、合并:比较两个子数组的最小数,其中较小的那个就是整个数组的最小数。
当数组规模小到只有 1 个元素时,就直接返回该元素(递归的终止条件)。
以数组[5, 3, 8, 1, 2]为例:
分解为[5, 3]和[8, 1, 2];
递归找[5, 3]的最小数是3,找[8, 1, 2]的最小数是1;
合并时比较3和1,最终得到整个数组的最小数1。
二、算法的最好、最坏时间复杂度分析
最好时间复杂度:O(n)
当数组本身已经是有序(升序),且每次分解后子数组的最小数都能在递归的早期比较中快速确定,但从分治的递归逻辑来说,仍需遍历所有元素一次,因此最好时间复杂度为线性级别。
最坏时间复杂度:O(n)
无论数组元素如何分布,分治算法找最小数都需要遍历每个元素至少一次(递归过程中每个元素都会被访问),因此最坏时间复杂度也是线性级别。
三、对分治算法的理解和体会
理解分治算法的核心思想-分解、递归、合并,结合 “找最小数” 的例子手动推导执行过程,明确递归终止条件和合并逻辑。
学习分治算法在其他问题中的应用,并对比不同场景下分治的 “分解” 和 “合并” 细节。

浙公网安备 33010602011771号