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

题目链接

题目:

分析:

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

代码:

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];
        }

    }
}

 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-14 23:54:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-14 23:54:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-14 23:54:02       82 阅读
  4. Python语言-面向对象

    2024-06-14 23:54:02       91 阅读

热门阅读

  1. 如何判断 是否 需要 CSS 中的媒体查询

    2024-06-14 23:54:02       34 阅读
  2. hive sql 下 日期时间加 一分钟的 语句

    2024-06-14 23:54:02       37 阅读
  3. prometheus relabel_configs 标签重写

    2024-06-14 23:54:02       30 阅读
  4. Django模板的继承与使用

    2024-06-14 23:54:02       40 阅读
  5. 空白服务器安装系统

    2024-06-14 23:54:02       29 阅读
  6. elementui table超出两行显示...鼠标已入tip显示

    2024-06-14 23:54:02       23 阅读
  7. web基础与http协议

    2024-06-14 23:54:02       27 阅读
  8. 什么是虚拟展厅?有何优势和特点?

    2024-06-14 23:54:02       26 阅读
  9. 【C语言中的科学计数法】

    2024-06-14 23:54:02       28 阅读
  10. 语义分割的数据集各式

    2024-06-14 23:54:02       30 阅读
  11. HBase中的CRUD

    2024-06-14 23:54:02       39 阅读
  12. (5)按钮输入

    2024-06-14 23:54:02       34 阅读
  13. 【Docker】Docker 配置镜像加速

    2024-06-14 23:54:02       30 阅读
  14. Python - 处理电子书的库

    2024-06-14 23:54:02       36 阅读
  15. 英伟达算法岗面试,问的贼专业。。。

    2024-06-14 23:54:02       39 阅读
  16. UE5.3报错

    2024-06-14 23:54:02       36 阅读
  17. 主成分分析学习

    2024-06-14 23:54:02       33 阅读