Lintcode80Mediansolution题解

来源:互联网 发布:sai手绘软件下载 编辑:程序博客网 时间:2024/06/07 04:39

【题目描述】

Given a unsorted array with integers, find the median of it.

A median is the middle number of the array after it is sorted.

If there are even numbers in the array, return theN/2-th number after sorted.

给定一个未排序的整数数组,找到其中位数。

中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。

【题目链接】

www.lintcode.com/en/problem/median/

【题目解析】

由于这里仅需要找出中位数,即找出数组中前半个长度的较大的数,不需要进行完整的排序,所以可以考虑用快速排序法。快排的核心思想就是以基准为界将原数组划分为左小右大两个部分,用在这十分合适。由于调用一次快排后基准元素的最终位置是知道的,故递归的终止条件即为当基准元素的位置(索引)满足中位数的条件时(左半部分长度为原数组长度一半)即返回最终结果。由于函数原型中左右最小索引并不总是原数组的最小最大,故需要引入相对位置(长度)也作为其中之一的参数。若左半部分长度偏大,则下一次递归排除右半部分,反之则排除左半部分。

【参考答案】

www.jiuzhang.com/solutions/median/