0
点赞
收藏
分享

微信扫一扫

Centos7.9安装lrzsz进行文件传输---Linux工作笔记059

给你一个整数数组 nums,请你将该数组升序排列。

输入:nums = [5,2,3,1]
输出:[1,2,3,5]
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

实现思路直接看我录制的视频吧算法-归并排序_哔哩哔哩_bilibili

class Solution {
    public int[] sortArray(int[] nums) {
        mergeSort(nums, 0, nums.length - 1);
        return nums;
    }

    private void mergeSort(int[] nums, int low, int height) {
        int mid = (low + height) / 2;
        if (low < height) {
            mergeSort(nums, low, mid);
            mergeSort(nums, mid + 1, height);
            merge(nums, low, mid, height);
        }
    }

    private void merge(int[] nums, int low, int mid, int height) {
        int[] temp = new int[height - low + 1];
        int i = low;
        int j = mid + 1;
        int index = 0;
        while (i <= mid && j <= height) {
            temp[index++] = nums[i] < nums[j] ? nums[i++] : nums[j++];
        }
        while (i <= mid) {
            temp[index++] = nums[i++];
        }
        while (j <= height) {
            temp[index++] = nums[j++];
        }
        for (int k =0 ; k < temp.length; k++) {
            nums[low + k] = temp[k];
        }
    }
}
举报

相关推荐

0 条评论