| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 29341 | Accepted: 17008 |
Description
Input
Output
Sample Input
5 2 4 1 3 5
Sample Output
3
Hint
A standard method to build a heap:
//1. 利用宏定义swap
//2. max_heapify(largest,heap,len);开始忘了递归了,自底向上地递归
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int N,milk[1000001],size;
void max_heapify(int i,int heap[],int len){//数组从0开始
int l,r,largest;
l=2*i+1; r=2*i+2;
if( l<len && heap[l]>heap[i] )
largest=l;
else
largest=i;
if( r<len && heap[r]>heap[largest] )
largest=r;
if(largest!=i){
swap( heap[largest],heap[i] );
max_heapify(largest,heap,len);
}
}
int main(){
int i,j;
scanf("%d",&size);
for(i=0;i<=size/2;i++){
scanf("%d",&milk[i]);
}
for(i=(size/2+1)/2-1;i>=0;i--)
max_heapify(i,milk,size/2+1);
for(i=size/2+1;i<size;i++){
scanf("%d",&milk[i]);
if(milk[i]<milk[0]){
swap( milk[i],milk[0] );
max_heapify(0,milk,size/2+1);
}
}
printf("%d\n",milk[0]);
//system("pause");
return 0;
}poj 2388 Heap Sort Heap Median
原文:http://blog.csdn.net/taoqick/article/details/19207667