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

分治-归并-912.排序数组-力扣(LeetCode)

一、题目解析

1、将数组排升序

2、在不使用任何内置函数的情况下解决问题

二、算法原理

分治-归并

合并两个有序数组

1、双指针遍历两个合并数组
2、将比较后的较小值放到新开数组中
3、防止有指针未遍历完,特殊处理
4、将nums中的元素还原

三、代码示例

 vector<int> tmp;vector<int> sortArray(vector<int>& nums){tmp.resize(nums.size());mergeSort(nums,0,nums.size()-1);return nums;}void mergeSort(vector<int>& nums,int left,int right){//只有一个元素或者区间不存在直接返回if(left>=right) return;//1、选择中间点划分区间int mid = (left+right)>>1;//2、左右区间排序mergeSort(nums,left,mid);mergeSort(nums,mid+1,right);//3、合并两个有序数组int cur1 = left,cur2 = mid+1,i = 0;while(cur1<=mid && cur2<=right)tmp[i++] = nums[cur1]<=nums[cur2] ? nums[cur1++] : nums[cur2++];//处理没有遍历完的数组while(cur1<=mid) tmp[i++] = nums[cur1++];while(cur2<=right) tmp[i++] = nums[cur2++];//4、还原for(int i = left;i<=right;i++)nums[i] = tmp[i-left];}

这里将tmp数组全局设置,目的是为了减少每次开辟所浪费的时间

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见!

http://www.dtcms.com/a/325829.html

相关文章:

  • 京东科技集团寻求稳定币链上活动规划师
  • 150V降压芯片DCDC150V100V80V降压12V5V1.5A车载仪表恒压驱动H6203L惠洋科技
  • shape转换ersi json 修改增加多部件要素处理和空洞处理
  • 安卓\android程序开发之基于 Android 的校园报修系统的设计与实现
  • Android.mk教程
  • RFID系统:物联网时代的数字化管理中枢
  • 算法训练营day45 动态规划⑫ 115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇
  • Java -- 集合 --Collection接口和常用的方法
  • (3万字详解)Linux系统学习:深入了解Linux系统开发工具
  • leetcode 15 三数之和
  • 【《数字货币量化交易:Linux下策略回测平台的搭建》】
  • 2025-2026 专升本论文写作【八项规范】
  • [202404-B]画矩形
  • 微信小程序常用 API
  • Arcpy-重采样记录
  • B站直播, 拼接4个窗口,能否实现
  • 从源码看 Coze:Agent 的三大支柱是如何构建的?
  • 【优化】图片批量合并为word
  • 嵌入式学习day24
  • MySQL的索引(索引的数据结构-B+树索引):
  • P2865 [USACO06NOV] Roadblocks G
  • 音视频学习(五十三):音频重采样
  • 数据备份与进程管理
  • AI大模型:(二)5.1 文生视频(Text-to-Video)模型发展史
  • Apache ECharts 6 核心技术解密 – Vue3企业级可视化实战指南
  • Apache Ignite 核心组件:GridClosureProcessor解析
  • ChatML vs Harmony:深度解析OpenAI全新对话结构格式的变化
  • 基于Spring Boot房源信息推荐系统的设计与实现 -项目分享
  • Maven <pom.xml> 标签详尽教程
  • perl notes【1】