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));
    }
相关推荐
Wang's Blog2 分钟前
Java 项目部署之 Docker工具快速入门: Docker 架构拆解:镜像、容器、守护进程与 Registry
java·docker·架构
栗子~~3 分钟前
SpringCloud Gateway 基于 Nacos 实现动态路由
java·spring cloud·gateway
java_nnnn9 分钟前
LeetCode刷题双指针(有效三角形的个数+三数之和)Java
算法·leetcode·职场和发展
人工智能培训10 分钟前
智能博弈背景下中国AI国防建设的战略价值
大数据·人工智能·算法·重构·生活
FYKJ_201011 分钟前
django个性化新闻推荐35173-计算机课程设计、毕业设计
java·spring boot·后端·python·架构·django·课程设计
flinn_small19 分钟前
三分算法:原理、实现与实战应用
数据结构·算法·三分
计算机毕设定制辅导-无忧学长20 分钟前
《校园食堂在线订餐小程序的设计与实现》
java·vue.js·spring boot·微信小程序·uniapp·校园食堂在线订餐小程序
夜之眷属25 分钟前
服务启动即崩:InetAddress.getLocalHost() 抛 UnknownHostException 排查记
java·运维·后端·docker
IT研究室28 分钟前
最新计算机毕业设计选题推荐-基于spring boot的食品安全信息管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
思茂信息36 分钟前
CST软件UV Slice切片后可直接删除指定一侧实体
算法·uv·emc·emi·cst·仿真软件