数据结构系列-堆排序当中的T-TOK问题

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

之前我们讲到了堆排序的实现逻辑,那么接下来我们重点关注的就是其中的T-TOK问题

T-TOK说简单点,就是说,假如有10000个数据(随机的),让你找到其中最大的10个数据,有什么快速的方法,遍历吗?这个是不显示的,效率是最低的

所以,我们能想到的比较好的方法就是堆排序当中的T-TOK问题

首先,我们传入100000

#define _CRT_SECURE_NO_WARNINGS
#include"Heap.h"
void CreateNDate()
{
	//造数据
	int n = 100000;
	srand(time(0));
	const char* file = "data.txt";
	FILD* 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 topk()
{
	printf("请输入k: >");
	int k = 0;
	scanf("%d", &k);
	const char* file = "data.txt";
	FILE* fout = fopen(file, "r");
	if (fout == NULL)
	{
		perror("fopen error");
		return;
	}
	int val = 0;
	int* minheap = (int*)malloc(sizeof(int) * k);
	if (minheap == NULL)
	{
		perror("malloc fail");
		return;
	}

	for (int i = 0; i < k; i++)
	{
		fsanf(fout, "%d", &minheap[i]);

	}
	//建立k个数据的小堆
	for (int i = (k - 1 - 1) / 2; i > 0; i--)
	{
		AdjustDown(minheadp, k, i);
	}
	int x = 0;
	while (fscanf(fout, "%d", &x) != EOF)
	{
		//读取堆顶的数据
		if (x > minheap[0])
		{
			minheadp[0] = x;
			AdjustDown(minheap, k, 0);
		}
		for (int i = 0; i < k; i++)
		{
			printf("%d", minheap[i]);
		}
		fclose(fout);
	}

}
int main()
{
	CreateNDate();
	topk();

	return 0;
}

在这个代码当中有几个比较厉害的点需要我们注意一下,首先在他的创建数据的那个阶段,我们使用了随机数,但是它那里进行了取余,这样的好处是将数字的范围控制在一个程度之内,可以检测自己的程序是否正确表达。

接下来可能需要注意的就是相关文件的操作

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/571293.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bottle,Python轻量级的Web框架!

目录 前言 安装 特性 基本功能 1. 路由功能 2. 请求参数获取 3. 静态文件服务 4. 模板渲染 高级功能 1. 中间件 2. 插件 3. 异步处理 实际应用场景 1. 小型Web应用 2. RESTful API服务 3. Web界面与后端逻辑分离 4. Web服务的快速原型开发 总结 前言 大家好&#xff0c…

YOLOv9改进策略 | 添加注意力篇 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)

一、本文介绍 本文给大家带来的改进是Triplet Attention三重注意力机制。这个机制&#xff0c;它通过三个不同的视角来分析输入的数据&#xff0c;就好比三个人从不同的角度来观察同一幅画&#xff0c;然后共同决定哪些部分最值得注意。三重注意力机制的主要思想是在网络中引入…

解密数字经济时代,元宇宙企业如何重塑商业价值?

从复盘中感知自我&#xff0c;坚持和过去对话&#xff0c;并引入未来的思考&#xff0c;飞天云动是一个典型的案例。 在科技的飞速发展和数字化浪潮的推动下&#xff0c;元宇宙这一概念如同一颗冉冉升起的新星&#xff0c;吸引了全球的目光。就目前而言&#xff0c;围绕元宇宙…

Ubuntu终端自动补全

文章目录 前言配置安装zsh安装 oh-my-zsh安装自动补全插件zsh-autosuggestions 参考 前言 Oh My Zsh 是一个针对命令行 shell 的开源框架&#xff0c;主要用于增强和美化命令行环境。它建立在 Zsh&#xff08;一种强大的 shell 替代品&#xff09;之上&#xff0c;提供了丰富的…

CountDownLatch

什么是CountDownLatch&#xff1a; CountDownLactch是一个同步工具类&#xff0c;用来协调线程之间的同步&#xff0c;其初始值是一个计数器&#xff0c;为线程的数量&#xff0c;当计时器的值为0时&#xff0c;代表此时所有线程的工作全部已经完成 常用方法&#xff1a; 1.cou…

33 信号产生

目录 1.键盘信号 2.显示器回显过程 3.信号产生方式 4.总结 键盘信号 键盘数据是如何输入给内核的&#xff0c;crtlc是怎么变成信号的&#xff1f; 键盘被按下&#xff0c;肯定是os先知道&#xff0c;os怎么知道键盘上有数据呢&#xff1f; c让操作系统每隔一段时间去轮询每…

Linux中Ctrl+C和Ctrl+Z的区别_实战讲解(超详细)

1、CtrlC和CtrlZ的区别&#xff1a; CtrlZ&#xff1a;暂停进程 即挂起进程 暂停当前进程并将其放到后台。可以在后续恢复执行。 暂停的进程仍然占用系统内存 CtrlC&#xff1a;终止进程 终止进程后&#xff0c;程序代码占用的内存会释放掉 2、实战讲解 跑人工智能代码的时候…

10.Java集合汇总

文章目录 1. Java集合概述1.1 Java集合框架概述1.2 Collection接口继承树1.3 Map接口继承树 2. Collection接口2.1 Collection接口方法 3 Iterator迭代器接口3.1 Iterator接口的方法3.2 foreach循环 4 List接口4.1 List接口方法4.1 ArrayList4.2 LinkedList4.3 Vector4.4 面试题…

如何通过大带宽优化美国站群服务器的全球访问速度?

如何通过大带宽优化美国站群服务器的全球访问速度? 在当今全球化的互联网时代&#xff0c;快速和稳定的网站访问对于企业至关重要。美国站群服务器因其地理位置和强大的网络基础设施而备受青睐&#xff0c;但要充分利用其优势&#xff0c;需要综合考虑多种因素。本文将探讨如…

233 基于matlab的多通道非负矩阵分解(MNMF)算法

基于matlab的多通道非负矩阵分解&#xff08;MNMF&#xff09;算法。其能够寻找到一个非负矩阵W和一个非负矩阵H&#xff0c;满足条件VW*H,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。使用EM准则对混合信号进行分解。程序已调通&#xff0c;可直接运行。 233 多通道非…

面试被刷,原因居然是不会Git

大家好&#xff0c;我是知微&#xff01; 假设你是一个刚入行的菜狗程序员&#xff0c;正在开发一个软件。 现在老板需要你加一些功能&#xff0c;此时的你有一些担忧&#xff0c;如果对代码进行大刀阔斧的改动&#xff0c;最终却失败了。之前能正常运行的代码也被改得乱七八糟…

商汤大模型一体机可节约80%推理成本,完成云端边全栈布局

商汤科技在上海举办技术交流日活动 会上商汤发布业内首个“云、端、边”全栈大模型产品矩阵&#xff0c;并推出全新升级的“日日新SenseNova 5.0”大模型体系。 影响至股价方面&#xff0c;商汤(00020.HK)今日开盘后大幅上涨。随后商汤在港交所公告称&#xff0c;商汤集团的…

《看漫画学C++》背后的故事1:艺术与科技的结合

引言&#xff1a; 在数字化浪潮中&#xff0c;艺术与科技的结合催生了无数创新。《看漫画学C》正是这一跨界合作的产物&#xff0c;它不仅是一本编程书籍&#xff0c;更是艺术与科技融合的典范。 一、相遇&#xff1a; 科技与艺术的火花作为一名专注于技术的软件程序员&…

【JAVA基础之IO】字节流、字符流以及乱码问题

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1. IO概述 1.1 什么是IO 1.2 IO的分类 1.3 字节和字符流的顶级父类 2. 字节流 2.1 一切皆为字节 2.2 字节输出流【OutputStream】 2.3 FileOutputStream类…

mfc140.dll丢失如何修复,分享多种有效的修复方法

在日常操作和使用电脑的过程中&#xff0c;我们可能会遇到一种较为常见的问题&#xff0c;即在尝试启动或运行某个应用程序时&#xff0c;系统突然弹出一个错误提示窗口&#xff0c;明确指出“mfc140.dll文件丢失”。这个mfc140.dll实际上是一个动态链接库文件&#xff08;DLL&…

Flask框架初探-如何在本机发布一个web服务并通过requests访问自己发布的服务-简易入门版

Flask框架初探 在接触到网络框架之前我其实一直对一个事情有疑惑&#xff0c;跨语言的API在需要传参的情况下究竟应该如何调用&#xff0c;之前做过的项目里&#xff0c;我用python做了一个代码使用一个算法得到一个结果之后我应该怎么给到做前端的同学或者同事&#xff0c;之前…

微信小程序使用echarts组件实现饼状统计图功能

微信小程序使用echarts组件实现饼状统计图功能 使用echarts实现在微信小程序中统计图的功能&#xff0c;具体的实现步骤思路可进我主页查看我的另一篇博文https://blog.csdn.net/weixin_45465881/article/details/138171153进行查看&#xff0c;本篇文章主要使用echarts组件实…

移动桌面均覆盖-免费使用,解锁VIP!

hello&#xff0c;我是小索奇 分享一下剪映&#xff0c;附带windows和移动端哈 软件内所有功能都已经解锁了哈&#xff01;不登录也是会员特权~ 相对于PR来说&#xff0c;用剪映省去了好多痛苦&#xff08;用过的都懂&#xff0c;都是包装&#xff09; 软件下载好之后双…

【计算机考研】计算机行业考研还有性价比吗?

刚上大学的时候觉得本科毕业就够了 到了大三找工作才发现自己什么都不会 只能踏上考研路 目前研一在读&#xff0c;身边有很多工作了几年又回来读研的同学&#xff0c;只能说现在计算机行业研究生还是比本科生有竞争力的 如果你的本科和我一样没有学什么技术&#xff0c;那…