当前位置: 首页 > 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.lryc.cn/news/617722.html

相关文章:

  • Catalyst 日志记录(Logging)
  • 石材 × 设计:解锁永恒材质的四大灵感密码
  • 获取MaixPy系列开发板机器码——MaixHub 模型下载机器码获取方法
  • ESP32 配合上位机串口打印数据
  • 【Web 服务的铁三角架构】Flask、Nginx 与 Docker 的分工与协作
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • macOS 搭建 Gitea 私有 Git 服务器教程
  • wed前端第三次作业
  • 算法训练营DAY57 第十一章:图论part07
  • 缓存的三大问题分析与解决
  • STM32蓝牙模块驱动开发
  • 第10节 大模型分布式推理典型场景实战与架构设计
  • 《算法导论》第 19 章 - 斐波那契堆
  • 【SpringBoot】持久层 sql 注入问题
  • 一周学会Matplotlib3 Python 数据可视化-绘制直方图(Histogram)
  • 银河麒麟V10配置KVM的Ubuntu虚机GPU直通实战
  • 梯度裁剪总结
  • 做调度作业提交过程简单介绍一下
  • Spring Cloud Gateway 路由与过滤器实战:转发请求并添加自定义请求头(最新版本)
  • 如何安装 Git (windows/mac/linux)
  • 【数据可视化-85】海底捞门店数据分析与可视化:Python + pyecharts打造炫酷暗黑主题大屏
  • Java数据库编程之【JDBC数据库例程】【ResultSet作为表格的数据源】【七】
  • NY185NY190美光固态闪存NY193NY195
  • cf--思维训练
  • 【C++语法】输出的设置 iomanip 与 std::ios 中的流操纵符
  • Dashboard.vue 组件分析
  • 基于 Axios 的 HTTP 请求封装文件解析
  • 【Redis的安装与配置】
  • ESP32将DHT11温湿度传感器采集的数据上传到XAMPP的MySQL数据库
  • loading效果实现原理