归并排序——java
发布日期:2021-06-07 05:56:25 浏览次数:5 分类:技术文章

本文共 737 字,大约阅读时间需要 2 分钟。

归并排序

时间复杂度:O(n*log2(n))
空间复杂度:O(n)
稳定
核心代码

/** * 归并排序 * @author jin */public class Merge {
/** * 使用递归的方法对原数组进行分组 * @param array * @param left * @param right */ public static void sort(int[] array,int left,int right){ if(left

归并排序是将数组分为若干子数组,这些子数组是有序的,然后把子数组合并为整体的有序数组。

步骤:
(1)先进行分组,直到每组的长度为1为止,需要用到递归;

void sort(int[] a,int left,int right){    if(left

(2)合并子数组,先把小点的元素放入临时数组,再把大点的元素放入临时数组,等到都放入临时数组后,再把临时数组中的数据给原数组,完成排序。

void merge(int[] a,int left,int mid,int right){    int[] tmpArr=new int[a.length];//设置一个临时数组    int tmpIndex=left;//临时数组的首索引    int index=left;//原数组的首索引    int rightIndex=mid+1;//右数组的首索引    while(left<=mid&&rightIndex<=right){
//当左数组的索引不大于中间索引,并且右索引不大于末索引时,循环 if(a[left]

转载地址:https://blog.csdn.net/Levi_moon/article/details/51477148 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:基数排序——java
下一篇:快速排序——java

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月27日 04时00分05秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章