吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1367|回复: 0
收起左侧

[Java 转载] 【笔记】数据结构与算法之排序(归并排序)

[复制链接]
QingYi. 发表于 2021-1-13 21:28
再次学习
[Java] 纯文本查看 复制代码
public class Main {
    static int [] temp;
    public static void main(String[] args) {
        int [] arr = {1,3,5,2,4,8,6,7};
        int n = arr.length;
        temp = new int[n];
        sort(arr,0,n-1);
        for (int i : arr) {
            System.out.print(i+" ");
        }
    }

    private static void sort(int[] nums, int l, int r) {
        //判断边界
        if (l>=r){
            return ;
        }
        //拿到中间值
        int mid = (l+r)>>1;
        //进行递归
        sort(nums,l,mid);
        sort(nums,mid+1,r);
        //如果不是有序的才进行计算
        if (nums[mid]>nums[mid+1]) {
             merge(nums, l, mid, r);
        }

    }

    private static void merge(int[] arr, int l, int mid, int r) {
        //打个备份
        System.arraycopy(arr,l,temp,l,r-l+1);
        //两个哨兵
        int i = l, j = mid+1;
        for(int k = l;k<=r;k++) {
            //左边超边界
            if (i > mid){
                arr[k] = temp[j++];
            }else if (j>r){
                //右边超边界
                arr[k] = temp[i++];
            }else if (temp[i]<=temp[j]){
                //左边小于右边,直接拿左边的
                arr[k] = temp[i++];
            }else {
                //否则拿右边的
                arr[k] = temp[j++];
            }
        }
    }
}
理解总结了一遍

在新标签打开所有链接复制所有链接URL复制所有链接URL(反向)复制所有链接标题 + URL复制所有链接标题 + URL (MD)复制所有链接标题 + URL (BBS)复制所有链接标题 + URL (筛选)复制所有链接标题 + URL (设置复制格式)在新标签页打开所有图片链接在一个标签页显示所有图片链接
复选框 - 选中
复选框 - 取消
复选框 - 反选
单选框 - 选中
单选框 - 取消
特殊单选框 - 选中

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表