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),那么必定使用二分查找...

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

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

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

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

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

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

USTCOJ 1359 查找中位数 不用排序

USTC在线评测1359题 http://acm.ustc.edu.cn/ustcoj/problem.php?id=1359 该题要求读入n个整数,然后输出该n个整数的中位数。同时输入的数的个数是...

利用随机化快速排序求带权中位数C++实现

// 利用随机化快速排序求带权中位数.cpp : Defines the entry point for the console application. // //中位数:n个元素集合中,第n/...

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

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

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

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

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

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

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

对有限数组进行计数排序和求一个无序数组的中位数——题集(十九) 今天分享一下,实现对有限数组进行计数排序和求一个无序数组的中位数的代码实现和测试用例。 数组定义为:int a[] = {12,13,1...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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