ural 1306 堆排序找中位数
2013-12-05 19:10
225 查看
题目要求找到一个数组的中位数
要是直接排序然后找到中位数的话,肯定是超内存的
选择堆排序,用STL中的make_heap, pop_heap, push_heap
代码如下:
要是直接排序然后找到中位数的话,肯定是超内存的
选择堆排序,用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 */
相关文章推荐
- URAL 1306 - Sequence Median 小内存求中位数
- Ural_1306. Sequence Median(堆)
- Ural 1306. Sequence Median
- 堆排序:动态数组求中位数
- Ural 1306 Sequence Median
- ural 鹰蛋&51nod 1306
- ural 1306(堆-优先级序列)
- ural 1306. Sequence Median(优先队列)
- 海量数据取中位数,比较简单耗时的是用堆排序
- ural 1306. Sequence Median(优先级队列 priority_queue用法)
- ural 1306【priority_queue+堆查找中间值】
- URAL 1306. Sequence Median
- ural 1306. Sequence Median
- URAL 1306-Sequence Median(堆)
- URAL 1306. Sequence Median(优先队列)
- 二叉堆,堆排序,STL优先队列的底层实现,剑指offer数据流中的中位数
- ural 1306. Sequence Median(优先级队列 priority_queue用法)
- ural 1306 (heap推排序)
- ural 1306 Sequence Median
- ural 1306. Sequence Median