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

《数据结构、算法与应用C++语言描述》- 堆排序 - 借助priority_queue的C++实现

堆排序

完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_27HeapSort

定义

借助堆进行排序。先用n个待排序的元素初始化一个小根堆,然后从堆中逐个提取(即删除元素)元素。初始化的时间复杂度为O(n),大根堆中每删除一个元素的时间复杂度为O(logn)。因此总的时间复杂度为O(nlogn)。

实现

main.cpp

#include <iostream>
#include <queue>
#include <vector>int main() {std::vector<int> data = {1, 5, 6, 99, 88, 66};std::vector<int> res(data.size());// 使用数组初始化小根堆std::priority_queue<int, std::vector<int>, std::greater<>> pq(data.begin(), data.end());for(int i = 0; i < data.size(); i++){res[i] = pq.top();pq.pop();}for(int re : res)std::cout << re << " ";std::cout << std::endl;return 0;
}

运行结果

"C:\Users\15495\Documents\Jasmine\prj\_Algorithm\Data Structures, Algorithms and Applications in C++\_27HeapSort\cmake-build-debug\_27HeapSort.exe"
1 5 6 66 88 99Process finished with exit code 0
http://www.lryc.cn/news/260009.html

相关文章:

  • 10.CSS浮动
  • Angular 2 学习笔记
  • xcode 修改 target 中设备朝向崩溃
  • ZLMediaKit 编译以及测试(Centos 7.9 环境)
  • 汽车清除积碳和清洗节气门
  • RocketMQ 总体概括
  • 使用qemu在arm上模拟x86并运行docker
  • IIS配置多域名跨域
  • el-form表单校验输入框值为0时 提示校验不通过
  • Vue3后台管理-项目总结
  • 利用Pytorch预训练模型进行图像分类
  • MSF学习
  • Mybatis与Spring结合深探——MapperFactoryBean的奥秘
  • processon使用及流程图和泳道图的绘画(登录界面流程图,门诊流程图绘制门诊泳道图,住院泳道图,OA会议泳道图),Axure自定义元件
  • 【虹科干货】关于JSON数据库
  • 区块链的可拓展性研究【03】扩容整理
  • golang学习笔记——互斥锁sync.Mutex、计数器sync.WaitGroup、读写锁sync.RWMutex
  • MFC 加载本地文件设置图标
  • 飞天使-linux操作的一些技巧与知识点6-ansible结合jinja2使用,可规范化进行自动化管控
  • ROS2 Control分析讲解
  • Java TCP(一对一)聊天简易版
  • 2.4 C语言之运算符
  • 做题笔记:SQL Sever 方式做牛客SQL的题目--SQL157
  • 微信小程序map视野发生改变时切换定位点
  • javaweb搭配ajax和json
  • VS2022 将项目打包,导出为exe运行
  • 【Py/Java/C++三种语言OD2023C卷真题】20天拿下华为OD笔试【DP】2023C-分班【欧弟算法】全网注释最详细分类最全的华为OD真题题解
  • pr模板哪个网站好?免费Pr模板视频素材下载网站 Prmuban.com
  • 【论文阅读】LoRA: Low-Rank Adaptation of Large Language Models
  • MybatisPlus的分页插件