算法第二章实践作业

一,找第K小的数的分治算法
(1)通过partition函数选左端点为基准元素,将数组划分为“左半部分<=基准,基准<=右半部分”的两个区间
(2)通过find函数来计算基准元素在当前区间的排名。如果排名等于k则基准即为目标,如果排名小于K则调整K后递归调查右区间,如果排名大于K则递归调查左区间,直到区间内只含一个元素时直接返回
二,
(1)最好时间复杂度:每次基准元素都是要找的第K小的数,总耗时为n+n/2+...+1=2n-1,所以最好时间复杂度为O(n)
(2)最坏时间复杂度:每次基准元素都是当前区间的最小或最大元素,总耗时为n+(n-1)+(n-2)+...+1=n(n+1)/2,时间复杂度为O(n*n)
三,分治算法的核心是将复杂的问题不断拆分成更小的同类问题,最后在递归合并结果,例如在找第K小的数中运用分治算法就避免了需要全部按顺序排列的操作,以此降低了时间复杂度

posted @ 2025-10-30 16:50  罗柔柔  阅读(0)  评论(0)    收藏  举报