算法第二章实践作业
一、描述
总共分为三步
1.选择基准元素:从数组中随机选择一个元素作为基准(pivot)
2.分区操作:将数组分为三部分:小于基准的元素,等于基准的元素,大于基准的元素
3.递归判断:
如果k落在小于基准的区域,在左半部分递归查找第k小数;
如果k落在等于基准的区域,基准就是第k小数;
如果k落在大于基准的区域,在右半部分递归查找第(k-左半部分大小-等于部分大小)小的数
二、时间复杂度
最好情况时间复杂度:O(n)
发生在每次分区都能将数组均匀划分时
递归式:T(n) = T(n/2) + O(n)
根据主定理,时间复杂度为O(n)
最坏情况时间复杂度:O(n²)
发生在每次选择的基准都是最小或最大元素时
递归式:T(n) = T(n-1) + O(n)
解得T(n) = O(n²)
平均情况时间复杂度:O(n),通过随机化选择基准可以保证期望时间复杂度为O(n)
三、体会和理解
分治法体现了"分而治之"的战略思想,将复杂问题分解为规模较小的相同子问题,递归求解后再合并结果。这种思想在算法设计中具有重要价值。其不仅是一种算法设计技术,更是一种重要的思维方式,在解决复杂问题时具有广泛的适用性。
浙公网安备 33010602011771号