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

C++排序

快速排序

int partition(std::vector<int>& arr,int low,int high){int pivot = arr[low];int left = low;int right = high;while(left!=right){while(right!=left){if(arr[right]<pivot){arr[left]=arr[right];left++;break;}right--;}while(left!=right){if(arr[left]>pivot){arr[right]=arr[left];right--;break;}left++;}}arr[left]=pivot;return left;}void quickSort(std::vector<int>& arr,int low,int high){if(low<high){int pi = partition(arr,low,high);quickSort(arr,low,pi-1);quickSort(arr,pi+1,high);}}

 归并排序

void myMerge(std::vector<int>& arr,int left,int middle,int right){int i = left;int j = middle+1;std::vector<int> auxiliary_vec(right-left+1,0);int n = 0;while (i<=middle&&j<=right){if(arr[i]<=arr[j]){auxiliary_vec[n]=arr[i];i++;}else{auxiliary_vec[n]=arr[j];j++;}n++;}while(i<=middle){auxiliary_vec[n]=arr[i];i++;n++;}while(j<=right){auxiliary_vec[n]=arr[j];j++;n++;}for(int k = 0;k<auxiliary_vec.size();k++){arr[left+k]=auxiliary_vec[k];}}void mergeSort(std::vector<int>& arr, int left, int right){if(left<right){int middle = left+(right-left)/2;mergeSort(arr,left,middle);mergeSort(arr,middle+1,right);myMerge(arr,left,middle,right);}}

堆排序

void heapify(std::vector<int>& arr,int n,int root){int largest = root;int left = 2*root + 1;int right = 2*root + 2;if(left<n&&arr[left]>arr[largest]){largest=left;}if(right<n&&arr[right]>arr[largest]){largest=right;}if(largest!=root){std::swap(arr[root],arr[largest]);heapify(arr,n,largest);//向下传递,选出替换节点值后的原最大节点和其子节点中的最大值}}void heapSort(std::vector<int>& arr){int n = arr.size();//构建最大堆,n/2 - 1恰好为右子树的最后一个拥有子节点的节点for(int i = n/2 - 1;i>=0;i--){heapify(arr,n,i);//向上传递,选出最大数字}//排序,逐渐移动当前最大值arr[0]到当前末尾ifor(int i = n-1;i>0;i--){std::swap(arr[0],arr[i]);heapify(arr,i,0);}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索802.1X:构筑安全网络的认证之盾
  • 嵌入式学习day17(数据结构)
  • 【C++】深度解析:用 C++ 模拟实现 priority_queue类,探索其底层实现细节(仿函数、容器适配器)
  • WARNING XXX is not overriding the create method in batch
  • IDEA XML文件去掉黄色和绿色底色
  • Qt第十六章 多媒体Multimedia
  • fscan下载和使用
  • 预训练语言模型PLM(课程笔记)
  • 数据结构:栈、队列详解篇
  • 找到sql里面参数字段占位符的位置,方便对字段进行加密存储
  • “软件定义汽车”下的软件虚拟化技术
  • Unity常用插件记录
  • MATLAB算法实战应用案例精讲-【人工智能】暗数据(概念篇)
  • 添加数据判断是否存在存在不添加,或存在更新
  • 【网络编程】第十章 网络层-IP(分片组装+网段+路由+NAT)
  • Brief introduction of how to 'Call, Apply and Bind'
  • co.js - 让异步代码同步化
  • Git初体验
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • js递归,无限分级树形折叠菜单
  • Laravel Telescope:优雅的应用调试工具
  • Netty源码解析1-Buffer
  • oldjun 检测网站的经验
  • Spark学习笔记之相关记录
  • Spring Boot MyBatis配置多种数据库
  • windows下如何用phpstorm同步测试服务器
  • 阿里云Kubernetes容器服务上体验Knative
  • 分布式事物理论与实践
  • 力扣(LeetCode)357
  • 深度学习在携程攻略社区的应用
  • Spring Batch JSON 支持
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​zookeeper集群配置与启动
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (3)llvm ir转换过程
  • (CPU/GPU)粒子继承贴图颜色发射
  • (function(){})()的分步解析
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (六)vue-router+UI组件库
  • (三)Honghu Cloud云架构一定时调度平台
  • (自用)仿写程序
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ***通过什么方式***网吧
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .Net Memory Profiler的使用举例
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 直连SAP HANA数据库
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET开源、简单、实用的数据库文档生成工具
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)