堆排序求TopK(java)(2)
时间:2025-05-14
时间:2025-05-14
建立一个长度为K的堆,求一组数据中最小的K个数
else
{
break;
}
}
h[i] = value;
}
/*
* 将前k个数据建成堆
*/
public void kheap(double data[])
{
if(k>data.length)
{
System.out.println("数组元素个数不足K个");
return ;
}
//将data中的前k个元素建成堆
for(int i=0;i<k;++i)
{
heap[i+1] = data[i];
}
for(int i=k/2;i>0;--i)
{
toheap(i,k,heap);
}
}
/*
* 读入整个数组,求Top K
*/
public void getTopK(double data[])
{
//将前k个数据建堆
kheap(data);
//对K之后的数据依次读入
for(int i=k;i<data.length;++i)
{
getTopKoneByone(data[i]);
}
}
/*
上一篇:集团公司创新计划