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

【数据结构】堆排序

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>template<class T>
void swap(T& a,T& b)
{T tmp = std::move(a);a = std::move(b);b = std::move(tmp);
}//建大堆
void AdjustDown(int* arr,int size,int root)//这里是向下调整算法。
{int parent = root;int child = root * 2 + 1;while (child<size){if (child+1 <size &&arr[child]<arr[child+1]){child += 1;//两个孩子节点较大的;}if (arr[child] > arr[parent]){swap(arr[child],arr[parent]);parent = child;child = child * 2 + 1;}else{break;}}}//1.升序排序建大根堆,降序排序建小根堆。这里默认是升序排序,所以建大堆。
//2.将堆顶元素与末尾元素进行交换,将堆顶的最大元素沉到数组末尾。
//3.重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤直到整个序列有序。void Heap_Sort(int* arr, int size)
{//1.先建堆int root = (size - 1 - 1) / 2;//最后一个叶子结点的父节点。for (int i=root;i>=0;--i){AdjustDown(arr, size, i);//向下调整}//2.排序for (int i=size;i>1;--i)//i不用等于1,只剩一个元素那么就不用再排序了,这个时候已经有序了;{swap(arr[0],arr[i-1]);//堆顶元素与最后一个节点元素交换AdjustDown(arr,i-1,0);//现在只需对i-1个元素重新调整建堆。}}int main()
{int arr[] = {10,88,92,46,32,55,53,21,32,77};int size = sizeof(arr) / sizeof(int);Heap_Sort(arr,size);for (auto& e:arr){std::cout<<e<<std::endl;}return 0;
}

相关文章:

  • Java调用HTTPS接口,绕过SSL认证
  • 项目实战:封装响应结果以及抽取响应代码到工具类
  • 记录 vue + vuetify + electron 安装过程
  • 数据分析在程序员职业中的重要性及实践应用
  • AM@变系数线性微分方程中的可常系数化类型@欧拉方程
  • NI-9236 国产化10 kS/s/ch,350 Ω四分之一桥应变计,8通道C系列应变/桥输入模块
  • Python 正则表达式(RegEx)指南
  • 设计模式大赏(一):桥接模式,组合模式
  • Flutter屏幕适配
  • opencv第一个例子
  • dockefile
  • python脚本-requests模块
  • 直播间讨论区需要WebSocket,简单了解下
  • go-pprof-leak漏洞
  • unity 鼠标拖拽旋转 3d物体
  • 网络传输文件的问题
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【css3】浏览器内核及其兼容性
  • 2017前端实习生面试总结
  • Android系统模拟器绘制实现概述
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • PhantomJS 安装
  • Spring Cloud中负载均衡器概览
  • TCP拥塞控制
  • 机器学习 vs. 深度学习
  • 解析带emoji和链接的聊天系统消息
  • 来,膜拜下android roadmap,强大的执行力
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • #define、const、typedef的差别
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C#)一个最简单的链表类
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (搬运以学习)flask 上下文的实现
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (接口封装)
  • (四)c52学习之旅-流水LED灯
  • (转)nsfocus-绿盟科技笔试题目
  • (转)可以带来幸福的一本书
  • (转)母版页和相对路径
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)平衡树
  • .Net IE10 _doPostBack 未定义
  • .netcore 获取appsettings
  • .Net多线程总结
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • []常用AT命令解释()
  • [51nod1610]路径计数
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C++]Leetcode17电话号码的字母组合
  • [Contiki系列论文之2]WSN的自适应通信架构