1.介绍
我们可能经常会看到这样的一个问题,让我们在一组数据当中找到这组数据的前n个数据,这些数据可能是最小前n个数,或者是最大的前n个数。这也就是经典的TopK问题,现在就让我们进入TopK的世界。
我们可以将其分成五步来进行
1.首先我们可以制造一个TopK验证数据
2.先将前n个数据进行建堆
3.将剩余的N-n个数据“进”堆
4.将最大的前n个数据给筛选出来
5.建立大堆将这n个数据进行排序
2.TopK的实现
2.1.制造一个TopK验证数据
int* TopKDatadase(void)
{
int* TopK = (int*)malloc(sizeof(int)*N);
//获取时间种子
//将电脑的时间种子转移到C语言当中
srand((unsigned)time(NULL));
for (int i = 0; i < N; i++)
{
TopK[i] = rand() % 1000;
}
//设置n个特定的数字
TopK[9
最低0.47元/天 解锁文章
883

被折叠的 条评论
为什么被折叠?



