找第k小数的分治算法:
选基准,将数组划分为小于等于基准和大于基准的两部分,基准位置为m
若m=k,返回基准
若m>k,在左部分递归找第k小数
若m<k,在右部分递归找第k-m小数
时间复杂度:
最好情况:每次划分均衡,T(n)=T(n/2)+O(n),O(n)
最坏情况:每次划分极端不均,T(n)=T(n-1)+O(n),O(n²)
分治法体会:
分治法将大问题分解为相似小问题,解决后合并结果。在此算法中通过划分将问题规模缩小。优点是能降低问题复杂度,特别是划分均匀时效率高。缺点是若划分不均可能导致效率下降,因此划分策略很重要。这种分解思想也可应用于其他问题求解。