递归方式实现归并排序的详细图解

本文深入讲解了归并排序算法的实现细节,包括递归分解、合并过程及优化技巧,通过代码示例帮助读者理解归并排序的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注释

绿色为返回
橘黄色为步骤
蓝色为指向排序方法

代码如下

public static void mergerSort(int[] array){
    merge(array,0,array.length-1);
}
public static void merge(int [] array, int low ,int high ){
    if(low==high){
        return ;
    }
    int mid = (high+low)/2;
    merge(array,low,mid);
    merge(array,mid+1,high);
    mergeHelp(array,low,mid,high);
}
public static void mergeHelp(int[] array,int low ,int mid,int high){
    int s1 = low;
    int s2 = mid+1;
    int len = high-low+1;
    int[] tmp = new int[len];
    int i =0;
    while(s1<=mid&&s2<=high){
        if(array[s1]<array[s2]){
            tmp[i++] = array[s1++];
        }else {
            tmp[i++] = array[s2++];
        }
    }
    while(s1<=mid){
        tmp[i++] = array[s1++];
    }
    while(s2<=high){
        tmp[i++] = array[s2++];
    }
    for (int j = 0; j <tmp.length ; j++) {
        array[low+j] = tmp[j];
    }
}

图解如下

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值