堆排序求TopK(java)(3)
时间:2025-05-14
时间:2025-05-14
建立一个长度为K的堆,求一组数据中最小的K个数
* 依次读入数据,求Top K
*/
public void getTopKoneByone(double data)
{
//只有在输入数据比堆顶元素小时才更新heap if(data<heap[1])
{
heap[1] = data;
toheap(1,k,heap);
}
}
public static void main(String args[])
{
//double[] data = {2,10,5,7,3,1,7,8};
double data[] = new double[100000];
for(int i=0;i<data.length;++i)
{
data[i] = Math.random()*100000;
}
topheap th = new topheap(10,data.length);
th.getTopK(data);
for(int i=1;i<=th.k;++i)
{
System.out.print(th.heap[i]+" ");
}
System.out.println();
/*//冒泡排序求Top K,可以比较一下
for(int i=data.length-1;i>0;--i)
for(int j=0;j<i;++j)
{
if(data[j]>data[j+1])
{
double t = data[j];
data[j] = data[j+1];
data[j+1] = t;
}
}
for(int i=0;i<th.k;++i)
System.out.println(data[i]);
*/
}
上一篇:集团公司创新计划