求一个无序数组的中位数
中位数是将数组排序之后,数组个数为奇数时,取中间的即为中位数;数组个数为偶数时,取中间两个的平均值即为中位数。
思路一:
要取得中位数,即给数组排序,使用任意排序算法均可,然后按数组下标取其中位数。
PS:该方法很直观,此处不实现
思路二:
1.设数组元素为n个,且为奇数个时,取数组前(n+1)/2个元素建一个小堆
2.遍历数组剩余元素,如果比堆顶元素大即入堆,如果比堆顶元素小或等于堆顶元素,即舍弃,不入堆
3.遍历完数组元素时,堆顶即为中位数
求一个无序数组的中位数
中位数是将数组排序之后,数组个数为奇数时,取中间的即为中位数;数组个数为偶数时,取中间两个的平均值即为中位数。
思路一:
要取得中位数,即给数组排序,使用任意排序算法均可,然后按数组下标取其中位数。
PS:该方法很直观,此处不实现
思路二:
1.设数组元素为n个,且为奇数个时,取数组前(n+1)/2个元素建一个小堆
2.遍历数组剩余元素,如果比堆顶元素大即入堆,如果比堆顶元素小或等于堆顶元素,即舍弃,不入堆
3.遍历完数组元素时,堆顶即为中位数