C语言实现小根堆

发布时间:2026/10/23 3:48:32

C语言实现小根堆 迭代式建堆#includestdio.hvoidswap(int*a,int*b){inttemp*a;*a*b;*btemp;}voiddown(int*nums,intsize,inti){for(intk2*i1;ksize;k2*k1){/* 父节点 (k - 1) / 2左子节点 k右子节点 k 1 */printf_s(*************************************************************\r\n);printf_s(父节点i %d, 左子节点k %d, 右子节点k 1 %d\r\n,i,k,k1);// 取左右子节点中较小的那一个if(k1sizenums[k]nums[k1]){printf_s(nums[%d] nums[%d] %d %d k\r\n,k,k1,nums[k],nums[k1]);k;}if(nums[k]nums[(k-1)/2]){printf_s(nums[%d] nums[%d] %d %d break\r\n,k,(k-1)/2,nums[k],nums[(k-1)/2]);printf_s(*************************************************************\r\n);break;}printf_s(nums[%d] nums[%d] %d %d swap\r\n,k,(k-1)/2,nums[k],nums[(k-1)/2]);swap(nums[k],nums[(k-1)/2]);for(intj0;jsize;j){printf(%d ,nums[j]);}printf_s(\r\n);for(intj0;jsize;j){printf(%d ,j);}printf_s(\r\n*************************************************************\r\n);}}voidInit(int*nums,intsize){for(intisize/2-1;i0;i--){down(nums,size,i);}}intPop(int*nums,intsize){swap(nums[0],nums[size-1]);down(nums,size-1,0);returnnums[size-1];}voidPush(int*nums,intsize,intx){nums[size]x;// 子节点小于父节点的值交换值for(intisize;i0nums[(i-1)/2]nums[i];i(i-1)/2){swap(nums[(i-1)/2],nums[i]);}}voiditerator(int*nums,intsize){for(inti0;isize;i){printf(%d ,nums[i]);}printf(\n);}intmain(){intarr[]{9,8,7,6,5,4,3,2,1};intnsizeof(arr)/sizeof(arr[0]);Init(arr,n);printf(Min Heap:\n);iterator(arr,n);Push(arr,n-1,0);iterator(arr,n);Pop(arr,n);iterator(arr,n);return0;}运行结果大根堆中的比较逻辑如果父节点小于较大的子节点交换两个节点小根堆中的比较逻辑如果父节点大于较小的子节点交换两个节点这是废话^~^外部参考C 语言实现海量数据 TopK 问题小顶堆实战详解C语言实现大根堆
延伸阅读

更多相关文章

2026/10/22 22:05:16

Phoenix.PubSub实战教程:构建实时在线用户状态追踪功能

Phoenix.PubSub实战教程:构建实时在线用户状态追踪功能 【免费下载链接】phoenix_pubsub Distributed PubSub and Presence platform for the Phoenix Framework 项目地址: https://gitcode.com/gh_mirrors/ph/phoenix_pubsub Phoenix.PubSub是Phoenix框架的…

2026/10/24 0:27:42

JavaWeb原生架构实战:JSP+Servlet+JavaBean登录注册系统

简介:这是一份面向Java Web初学者的MVC架构实战项目资源,基于JSPJavaBeanServlet技术栈,完整实现用户登录注册、留言板交互及数据分页三大核心功能,适用于高校课程设计、Web开发入门实训与传统JavaEE技术栈巩固学习。资源包共78个…

2026/10/24 0:27:42

WPF上位机对接机器人Socket通讯:从10061报错到粘包解析实战

简介:面向机器人通信调试场景的WPF实战示例,围绕Socket套接字建立TCP连接、收发指令与界面联动展开,适合具备C#与.NET基础、希望理解上位机与机器人控制层如何稳定通信的开发者参考。压缩包共38个文件,约70KB,以14个C#…

2026/10/24 0:27:42

直链文件上传下载网站:轻量级生产部署方案

1. 项目概述:为什么需要一个“直链文件上传下载网站”?“直链文件上传下载网站”这个词,听起来像技术文档里的术语,但其实它解决的是我们每天都在面对的最朴素问题:怎么把一个文件,不绕弯、不卡顿、不依赖第…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑