[代码] [Java]代码 package com.tanghd;
import java.util.Random;
/**
* 运用小顶堆求解
* AMD 4400 ,Win7 64 ,4G RAM,JDK1.6_update24
* 求1亿随机数TopN,耗时1.4S
*/
public class TopN {
private int[] http://www.fpjinan.com/linked/20130224.do; arr=null;
private int top;
private int setCount=0;
private Random random;
public TopN(){
this(100);
}
public TopN(int top){
this.top =top;
init();
}
private void init(){
arr = new int[top];
random = new Random();
for(int i=0;i=top;
}
public int getNextInt(){
int i = this.random.nextInt();
return i;
}
public void heap(){
int length =arr.length;
int t= (length-1)>>1;
for(int i=t;i>=0;i--){
minHeapify(arr,i,length);
}
}
private void minHeapify(int[] array,int i,int size){
int l = ((i<<1) 1);
int r = l 1;
int min = i;
if(l