当前位置: 首页 > news >正文

选择荣胜网络宁波网站建设网站建设公司专业网站开发需求

选择荣胜网络宁波网站建设,网站建设公司专业网站开发需求,建筑猎头网,wordpress绑定域名收费前言 TopK问题:从n个数中,找出最大(或最小)的前k个数。 在我们生活中,经常会遇到TopK问题 比如外卖的必吃榜;成单的前K名;各种数据的最值筛选 问题分析 显然想开出40G的空间是不现实的&#…

前言

TopK问题:从n个数中,找出最大(或最小)的前k个数。

在我们生活中,经常会遇到TopK问题

比如外卖的必吃榜;成单的前K名;各种数据的最值筛选

问题分析

显然想开出40G的空间是不现实的,那应该怎么办呢?

答案是:建小堆

代码实现

#include<stdio.h>
#include<stdlib.h>
#include<time.h>// 造数据
void CreateNDate()
{// 造数据int n = 10000;srand(time(0));const char* file = "data.txt";FILE* fin = fopen(file, "w");if (fin == NULL){perror("fopen error");return;}for (int i = 0; i < n; ++i){int x = (rand() + i) % 1000000;fprintf(fin, "%d\n", x);}fclose(fin);
}
void Swap(int* px, int* py)
{int tmp = *px;*px = *py;*py = tmp;
}
//向下调整算法
void AdjustDown(int* a, int n, int parent)
{int child = parent * 2 + 1;while (child < n){if (child + 1 < n && a[child + 1] < a[child]){child++;}if (a[child] < a[parent]){Swap(&a[child], &a[parent]);parent = child;child = parent * 2 + 1;}else{break;}}
}
void PrintTopK(int k)
{FILE* fout = fopen("data.txt", "r");if (fout == NULL){perror("fopen mail");return;}int* minheap = (int*)malloc(sizeof(int) * k);if (minheap == NULL){perror("minheap mail");return;}for (int i = 0; i < k; i++){fscanf_s(fout, "%d", &minheap[i]);}//建小堆for (int i = (k - 1 - 1) / 2; i >= 0; i--){AdjustDown(minheap, k, i);}int x = 0;int val = 0;while (val = fscanf_s(fout, "%d", &x) != EOF){if (x > minheap[0]){minheap[0] = x;AdjustDown(minheap, k, 0);}}for (int i = 0; i < k; i++){printf("%d ", minheap[i]);}fclose(fout);
}
int main()
{//CreateNDate();printf("请输入k:>");int k = 0;scanf_s("%d", &k);PrintTopK(k);return 0;
}

运行结果:

结果验证

那我们怎么确定输出在屏幕上的数据就是最大的数据呢?

我们可以在已经创建的数据上面修改,如图后面111的是在原有数据上手动添加的

重新运行,结果与预期一致

http://www.yayakq.cn/news/645819/

相关文章:

  • 官方网站下载打印机驱动自己想做个网站怎么做的
  • 邵阳哪里做网站项目开发平台
  • 网站单页制作江门手机模板建站
  • 手机建站程序免费下载wordpress维护费用
  • 昆明企业网站建设公司代码生成器手机版下载
  • 国外网站建设什么价格网站建设总体规划包括
  • 帝国做双语网站股票做空网站
  • 出口手工艺品网站建设方案上海网站建设报价书
  • 可以免费网络推广网站房产怎么创建网站
  • 仿qq商城版淘宝客网站源码模板+带程序后台文章dede织梦企业程序wordpress英文版改成中文字体
  • 用什么做网站谷歌网站的主要内容
  • 南阳网站制作哪家好关于加强政务网站建设的通知
  • 网站在工信部备案用ae做模板下载网站
  • 网站开发哪家好网站开发工程师累不累
  • 新手制作网站工具创建网站服务器地址
  • 什么网站了解国家建设的行情安徽网站备案
  • 软件开发与网站开发像乐视做硬件的视频网站
  • 租房信息网站建设软件开发中以下模型哪些不是采用
  • 南昌知名网站建设公司公司企业邮箱号
  • 莱芜手机网站建设电话大秦wordpress付费阅读
  • 沈阳手机网站建设自建社区网站
  • 微信公众号 手机网站如何能去医疗网站做编辑
  • 一站式企业服务汽车类网站建设预算
  • 成品网站 售卖临海钢结构设计网站
  • 惠州网站建设外包百度推广 帮做网站吗
  • 石家庄整站优化技术重庆定制网站建设
  • 网站服务器无法访问优秀ppt作品范例
  • 国外自建站怎么样国内高清图片素材网站推荐
  • 广州网站开发技术企业如何进行seo
  • 房地产销售平台网站建设中华建设网算什么级别网站