java归并排序

java归并排序

归并排序分三步:

1.把数组分成左右两部分

2.把左右两部分都当成单独的数组继续分

3.排序:当不能再分的时候,对最小的左右两个数组进行比较排序。这个排序是拿两个数组的第i和j比,i小则j和i++比,把i放进新数组,j小则i和j++比,把j放进新数组里面。

相当于把数组排序分成许多小数组排序。

java 复制代码
public int[] merge(int[] nums1,int[] nums2) {
        //把传进来的左右数组进行一个一个元素相互比较,i和j比,i小则j和i++比,把i放进新数组,j小则i和j++比,把j放进新数组
        int m=nums1.length;
        int n=nums2.length;
        //创建一个新数组
        int[] arr=new int[m+n];
        //分别比较两个数组的元素,将小的添加到新数组
        int index=0,i=0,j=0;
        while(i<m&&j<n){
            if(nums1[i]>nums2[j]){
                arr[index]=nums2[j];
                j++;
            }else{
                arr[index]=nums1[i];
                i++;
            }
            index++;
        }
        //将剩余的元素添加到新数组中
        while(i<m){
            arr[index]=nums1[i];
            i++;
            index++;
        }
        while(j<n){
            arr[index]=nums2[j];
            j++;
            index++;
        }
        return arr;
    }
    public int[] sort(int[] nums){
        //递归中止条件:
        if(nums.length==0||nums.length==1){
            return nums;
        }

        //分割成左右两部分
        int[] left= Arrays.copyOfRange(nums,0,nums.length/2);
        int[] right= Arrays.copyOfRange(nums,nums.length/2,nums.length);
        //然后左右两部分分别排序
        //把左或右部分继续分割排序
        return merge(sort(left),sort(right));
    }
相关推荐
天空鸟_时光不老3 分钟前
13-亮点提炼:把技术说辞翻译成业务价值
java·spring boot·spring·spring cloud·mybatis
-dzk-4 分钟前
【多维动态规划】LC 1143.最长公共子序列
算法·动态规划
小蒜学长7 分钟前
基于SpringBoot+Vue的租房管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·租房管理
C++ 老炮儿的技术栈9 分钟前
char (*csConnectName)[256]; 和 char csConnectName [256] 有什么区别
java·c语言·开发语言·c++·人工智能·算法·c
洋就在江州13 分钟前
gitlab-cicd 离线集成——springboot-cicd (非docker形式,shell形式)
java·spring boot·后端·ci/cd·gitlab·gitlab-runner
Omics Pro19 分钟前
全新可重分析!代谢组质谱专用
数据库·人工智能·算法·机器学习·自然语言处理
CEZ19 分钟前
JeeWMS 开源 WMS 全景导览:一套 Java 仓库管理系统从单据流到代码入口的阅读地图
java·开源
Nebula_g20 分钟前
JavaSE加强:线程Thread(线程安全重点)
java·开发语言·jvm·算法·javase·技术栈
一只废狗狗狗狗狗狗狗狗狗21 分钟前
Network架构1——卷积神经网络CNN
人工智能·算法·cnn
令狐少侠201125 分钟前
centos7 下,使用docker 部署IOT 调试平台,ThingsBoard 并完美启动
java·spring boot·iot