第二次作业
(1)选择一个基准值povit
(2)划分数组:把数组重新排列,小于或者基准值的放在其左边,大于基准值的放在其右边
(3)比较:把当前povit的排名(povit当前排名=povit位置-左边界+1)与要找的第k小的数做比较;若povit排名 > k,说明第k小的数在povit的左半部分,则递归查找左半部分;若povit排名 > k,说明第k小的数在povit的右半部分,则递归查找右半部分;若povit排名=k,说明找到k了。
最好情况下的时间复杂度为O(n)。
最坏情况下的时间复杂度为O(n^2)。(当povit是当前所有数中最大/最小的元素时)
3.对分治法的体会思考
分治法就是把问题划分为若干个子问题,求每个子问题的最优解,然后再合并子问题。通常可能需要用到递归调用的方法,且该方法思路清晰,平均性能较好。

浙公网安备 33010602011771号