时月oe

博客园 首页 新随笔 联系 订阅 管理

归并排序

首先简单复习一下归并排序

class Solution {
    public void divide(int[] nums,int l,int r){
        if(l < r){
            int mid = (r + l) / 2;
            divide(nums,l,mid);
            divide(nums,mid + 1,r);
            merge(nums,l,mid,r);
        }
    }
    public void merge(int[] nums,int l,int mid,int r){
        int[] temp = new int[r - l + 1];
        int k = 0;
        int i = l;
        int j = mid + 1;
        while(i <= mid && j <= r){
            if(nums[i] < nums[j])temp[k++] = nums[i++];
            else temp[k++] = nums[j++];
        }
        while(i <= mid)temp[k++] = nums[i++];
        while(j <= r)temp[k++] = nums[j++];
        for(int n = 0;n < k;n++)nums[l + n] = temp[n];
    }
    public int[] sortArray(int[] nums) {
        divide(nums,0,nums.length - 1);
        return nums;
    }
}
posted on 2022-08-08 09:43  时月oe  阅读(29)  评论(0)    收藏  举报