在做uva11300时,遇到了n < 1000 000的中位数,就看了一下线性求中位数. 该算法的最差时间复杂度为O(N^2),期望时间复杂度为O(N),证明推理详见算法导论P110. 和快排的思想很像,同理,线性求第k大数,算法如下: ①以某个数x将一段数组分成两部分,比x小的放在左边,比x大的放在右边 ②如果x刚好是出于要找的位置的,直接返回 ③如果在x的左边,则递归在x的右边找 ④如果在x的右边,则递归在x的左边找 代码如下: /*=============================…