归并排序Java详解+例题

本文详细介绍了归并排序的原理、过程,并通过图形展示、模板代码和具体例子阐述了如何使用Java实现这一分治算法。核心在于递归地对数组左右部分进行排序,然后合并两个已排序的部分。
摘要由CSDN通过智能技术生成

归并排序—>分治

背景

归并排序是十大排序之一
十大排序:
在这里插入图片描述

归并原理与过程

原理:

取中值,将数组分成左右部分,分别对两边再次分成两个部分,一直到最终一边只有两个数,如何进行双指针从两端进行判定,若左端,比右端大,则交换两个位置的值。

过程

首先取数组中值,进行左右两边归并排序,调用递归。然后运用双指针算法(若不会,请看快速排序有讲解)判断两端的值,在适合条件下进行交换。最后完成所有区间的排序。

图形展示

在这里插入图片描述
最后,将所有区间的值进行排序合并
2 1 排序
2 1 4 排序
3 5 排序
2 1 4 3 5 排序

模板代码

 int mid = r + l >>1;
mergeSort(q , l , mid );
mergeSort(q , mid + 1 , r);
//合并,取k 值 
int k = 0 ,i = l , j = mid + 1;
while (i <= mid && j <= r) {
   
    if (q[i] <= q[j]) tem[k++] = q[i++];
    else tem[k++] = q[j++];
}
while(j <= r) tem[k++] = q[j++
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值