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

排序数组 ---- 分治-归并

题目链接

题目:

分析:

  • 用这道题来回顾一下归并排序的思想
  • 找到中间结点, 将数组分成两半, 运用递归的思想, 继续对一半进行分半, 分到最后剩一个元素, 再将左右数组合并, 合并两个有序数组, 是先分解, 再合并的过程
  • 在合并两个有序数组时, 需要一个额外的数组来记录, 为了避免每次递归都要创建一个新数组浪费空间, 可以将数组定义在全局变量

代码:

class Solution {int[] tmp;public int[] sortArray(int[] nums) {tmp = new int[nums.length];mergeSort(nums, 0, nums.length - 1);return nums;}public void mergeSort(int[] nums, int left, int right) {if (left >= right)return;
//找中间点int mid = left + ((right - left) >> 1);
//划分左边mergeSort(nums, left, mid);
//划分右边mergeSort(nums, mid + 1, right);
//对有序数组进行合并int cur1 = left;int cur2 = mid + 1;int 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++];for (int j = left; j <= right; j++) {nums[j] = tmp[j - left];}}
}

 

http://www.lryc.cn/news/366181.html

相关文章:

  • 【红黑树变色+旋转】
  • pytorch 使用tensor混合:进行index操作
  • Threejs(WebGL)绘制线段优化:Shader修改gl.LINES模式为gl.LINE_STRIP
  • 继承-进阶
  • 探索k8s集群的配置资源(secret和configmap)
  • 如何设置vue3项目中默认的背景为白色
  • MS1112驱动开发
  • K8s存储对象的使用
  • 构建自动化API数据抓取系统
  • 【Qt知识】部分QWidget属性表格
  • 【ARM64 常见汇编指令学习 19.1 -- ARM64 跳转指令 b.pl 详细介绍】
  • WWDC24即将到来,ios18放大招
  • C#中的空合并运算符与空合并赋值运算符:简化空值处理
  • 数据结构:哈夫曼树及其哈夫曼编码
  • 微信如何防止被对方拉黑删除?一招教你解决!文末附软件!
  • jar增量打包
  • 智慧医院物联网建设-统一管理物联网终端及应用
  • Debian的常用命令
  • 矩阵1-范数与二重求和的求和可交换
  • Python笔记 - *args和**kwargs
  • 微信小程序实现图片转base64
  • os和os.path模块
  • 链表题目练习----重排链表
  • 【杂记-浅谈XSS跨站脚本攻击】
  • VMware虚拟机与MobaXterm建立远程连接失败
  • mysql undolog管理
  • 【Linux】进程2——管理概念,进程概念
  • 【C++】植物大战僵尸杂交版自动存档——防闪退存档消失
  • 通过Excel,生成sql,将A表数据插入B表
  • 如何在MySQL中实现upsert:如果不存在则插入?