ural 1306 堆排序找中位数

原创 2013年12月05日 19:10:12

题目要求找到一个数组的中位数

要是直接排序然后找到中位数的话,肯定是超内存的

选择堆排序,用STL中的make_heap, pop_heap, push_heap

代码如下:

#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

int main() {
	int N, half, i;
	int temp, data[ 150001 ];

	while (scanf( "%d", &N ) != EOF) {
		half = N / 2 + 1;
		for ( i = 0; i < half; i++ )
			scanf( "%d", &data[ i ] );
		make_heap( data, data + half );

		while ( i++ < N ) {
			scanf( "%d", &temp );
			if ( temp < data[ 0 ] ) {
				pop_heap( data, data + half );
				data[ half - 1 ] = temp;
				push_heap( data, data + half );
			}
		}
		printf( "%.1f\n", N % 2 == 1 ? (float)data[ 0 ]: ( (float)data[ 0 ] + max( data[ 1 ], data[ 2 ] ) ) / 2 );
	}
	return 0;
}               
/*
7
3 6 7 2 1 5 4
4
3 6 4 5
*/


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

二分查找-两已排序数组中找中位数二题

第一题来自于《算法导论》第九章习题 9.3-8. 已知两个已排序数组X[n], Y[n](假设升序),问在时间O(lgn)内找到全部2n个数中的中位数。 给了提示时间O(lgn),那么必定使用二分查找...

中位数应用:输油管道问题--快速排序、改进、变种

问题描述:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。示意如下所示。如果给定n口油井的位置, 即它们的...

Vijos P1691 输油管道问题【中位数+排序】

背景 想念car的GF,car就出了道水题! 描述 某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果...

【数组】两个排序数组的中位数Median of Two Sorted Arrays

题目:找到两个排序数组的中位数, 两个数组大小分别是m和n, 要求时间复杂度是O(log(m+n)) 中位数:数组长度是基数,则中位数是中间值;数组长度是偶数,则中位数是中间两个数的算术平均值 ...

求两个等长已排序数组的中位数(算法导论习题9.3-8)

package homework; import static java.lang.Math.random; import java.util.Arrays; /** * 两个长度为n的有序数组的中序...

对有限数组进行计数排序和求一个无序数组的中位数——题集(十八)

对有限数组进行计数排序和求一个无序数组的中位数——题集(十九) 今天分享一下,实现对有限数组进行计数排序和求一个无序数组的中位数的代码实现和测试用例。 数组定义为:int a[] = {12,13,1...

poj 2388 Who's in the Middle(快速排序求中位数)

一、Description FJ is surveying his herd to find the most average cow. He wants to know how much milk...

快速排序(基准是中位数)

简介:  快排相比冒泡等相对较快,是因为其是跳跃式交换(快,要根据数据量等)下面算法介绍:  ①根据数据量,若大于cutoff,则用快排,反之用插入排序  ②先找基准(这里采用中位数),并将基准放在R...

基于计数排序求中位数问题的O(1)算法(Fraudulent Activity Notifications问题)

基于计数排序求中位数问题的O(1)算法(Fraudulent Activity Notifications问题)

leetcode解题之4. Median of Two Sorted Arrays java (两个排序数组的中位数)

leetcode解题之4. Median of Two Sorted Arrays java (两个排序数组的中位数)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ural 1306 堆排序找中位数
举报原因:
原因补充:

(最多只允许输入30个字)