【归并】Leetcode 排序数组

题目讲解

912. 排序数组

在这里插入图片描述


算法讲解

在这里插入图片描述
使用归并算法排序数组,我们先在数组中寻找一个mid点,然后把数组分成了两部分,我们先排左部分,排左边部分的时候有需要将当前的子数组分成两部分,继续循环,直到当前子数组的长度为1的时候,我们直接返回,排右边部分;将排好的左右部分进行有序数组的合并,合并完成之后将子数组填充到当时一段区间中的原数组当中去

class Solution {vector<int>temp;
public:vector<int> sortArray(vector<int>& nums) {temp.resize(nums.size());Merge(nums, 0, nums.size()-1);return nums;}void Merge(vector<int>& nums, int left, int right){if(left >= right)return;//选择中间的midint mid = left + (right - left) / 2;Merge(nums, left, mid);Merge(nums, mid + 1, right);//合并两个有序数组int i = 0, cur1 = left, cur2 = mid+1;while(cur1 <= mid && cur2 <= right){temp[i++] = nums[cur1] <= nums[cur2] ? nums[cur1++] : nums[cur2++]; }//走到这里有可能两个cur指针没有遍历完成while(cur1 <= mid)temp[i++] = nums[cur1++];while(cur2 <= right)temp[i++] = nums[cur2++];//填充到原数组中  这里的left and right 是原数组中的下标for(int k = left; k <= right; k++){nums[k] = temp[k-left];}}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/636722.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式物联网开发基石

前言 嵌入式物联网开发工程师&#xff0c;是一个蓝海新风口&#xff0c;高薪不内卷的行业。需要掌握熟悉c/c、单片机、数据结构&#xff0c;linux系统&#xff0c;ARM单片机&#xff0c;嵌入式。可以从事工作项目loT、视频监控领域的产品&#xff0c;跨平台系统&#xff0c;智能…

linux内核初始化成功后是如何过渡到android初始化的

Android用的linux内核&#xff0c;以完成OS该有的功能&#xff0c;例如&#xff0c;文件系统&#xff0c;网络&#xff0c;内存管理&#xff0c;进程调度&#xff0c;驱动等 &#xff0c;向下管理硬件资源向上提供系统调用。另一些Android特有驱动也放在内核之中。 当linux内核…

时序分析基础(6)——input delay时序分析

1 简介 FPGA对于外部的时钟以及数据的延时信息是不知道的&#xff0c;在低速时钟且时钟发射沿在数据正中心的时候&#xff0c;一般可以不做约束来直接使用。但是到了高速时钟或者双沿采样或者发射沿和数据对齐的情况下&#xff0c;这时候就需要告诉VIVADO外部的时钟与数据情况来…

前端css中border-radius的简单使用

前端css中border-radius的使用 一、前言二、border-radius语法三、border-radius的模型例子1.源码12.源码1效果截图 四、border-radius的动画效果&#xff08;动态交互&#xff09;1.源码22.源码2显示效果 五、结语六、定位日期 一、前言 在CSS中&#xff0c;我们常用border-r…

LE Audio —— Boardcast 与 Unicast 对比

蓝牙低功耗音频&#xff08;Bluetooth LE Audio&#xff0c;简称&#xff1a;LE Audio&#xff09;自 2020 年 1月 发布&#xff0c;到 2022 年 7 月完成全套规范的定义。 LE Audio是新一代蓝牙音频技术标准&#xff0c;采用了全新的音频架构&#xff0c;充分利用低功耗蓝牙无…

二维码门楼牌管理应用平台建设:网格化管理的新篇章

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、二维码门楼牌管理应用平台的功能特点三、二维码门楼牌管理应用平台的实际应用四、二维码门楼牌管理应用平台的前景展望 前言 随着信息技术的飞速发展&#xff0c;二维码门楼牌管理应用平台的建设已成为城市网格化管理…

【Java基础】25.包(package)

文章目录 前言一、包的作用二、创建包三、import 关键字四、package 的目录结构五、设置 CLASSPATH 系统变量 前言 为了更好地组织类&#xff0c;Java 提供了包机制&#xff0c;用于区别类名的命名空间。 一、包的作用 把功能相似或相关的类或接口组织在同一个包中&#xff…

STM32 HAL库 利用CH376进行USB文件读写

STM32 其实可以进行读取USB文件,但仅限于F4以上芯片才可以进行SUB文件读写,但在项目开发中,往往用不到此芯片,那么只能通过外挂的USB芯片进行USB文件读写,本文则是采用STM32F103的SPI与CH376进行通信,通过CH376操作指令进行操作。 1、CH376介绍 CH376芯片 是沁恒的一款文…

Modelsim自动化仿真脚本(TCL)——简单实例

目录 1. Modelsim与TCL脚本的关系 2.实验文件 2.1设计文件 2.2仿真测试文件 2.3. 脚本文件 3. 实验步骤 3.1. 创建文件夹 3.2. 指定路径 3.3. 创建工程 3.4. 运行命令 3.4. 实验效果 1. Modelsim与TCL脚本的关系 TCL&#xff08;Tool Command Language&#xff09;是…

Vue.js------Vue组件基础

能够理解Vue组件概念和作用能够掌握封装创建组件能力能够使用组件之间通信能够完成todo案例 一.Vue组件创建和使用 1.折叠面板-实现多个 创建一个文件夹demo 具体步骤请参考vue.js---vue基础 ⚫ 解决方案: 采用vue提供的单.vue文件-组件方式来封装一套然后复用 在component…

C++:面向对象大坑:菱形继承

菱形继承 1.单继承1.概念 2.多继承2.1概念2.2菱形继承1.概念2.问题3.样例理解二义性数据冗余对于内存模型抽象化 2.3菱形虚拟继承&#xff08;解决菱形继承的问题&#xff09;1.概念2.样例理解对于内存模型抽象化 2.4总结 3.问题总结1.C有多继承&#xff0c;为什么&#xff1f;…

xpath为元素路径定位

selenium4 pytest支持更多的包 和unittest对比 yaml数据驱动 allure报告 日志 数据库 通过jenkins发送消息 下载chromedriver Chrome for Testing availability https://googlechromelabs.github.io/chrome-for-testing/ 把chromedriver放到python文件夹里面 浏览…