算法第二章实践作业

1:首先从数组中选择一个元素作为基准元素,随后将数组以基准元素为界限分为小于基准的元素和大于基准的元素两部分。然后再判断基准元素在数组中的位置,其位置便是基准元素在数组中的大小排位。如果基准元素位置大于k,那么第k小的元素就在基准元素左边,随后递归左部分数组。如果等于,那么基准元素就是第k小元素,否则递归右部分数组。当子数组只有一个元素时,递归结束。
2:最好时间复杂度:O(n)每次分区左右部分长度相等或相近,每次递归处理规模为n + n/2 + n/4 + ... + 1等比数列求和得2n−1,渐进时间复杂度为O(n)
最坏时间复杂度:O(n^2)每次分区操作的基准元素为最大或最小元素,每次递归处理规模为n + (n-1) + (n-2) + ... + 1 = n(n+1)/2,渐进时间复杂度为O(n^2)
3:分治法核心是把问题拆分至最小不可再拆分单元,无需再拆分即可获得答案的程度。同时子问题的解法和原问题解法一致,使其可实现递归调用。该方法通过拆分降低了问题复杂度,变得易于理解。同时拆分的策略决定了时间复杂度,例如前面的问题,如果每次拆分问题规模只-1,那么它的时间复杂度就会升至O(n^2),所以好的拆分策略能最大化分治的优势,差的策略则会让分治失去意义。

posted @ 2025-10-25 13:42  菜心炒肉片  阅读(4)  评论(0)    收藏  举报