当前位置: 首页 > news >正文

java归并_java归并排序

概述

归并排序与快速排序相同,同样是借鉴二叉树的思想,时间复杂度O(n),与快速排序一样是大量数据排序的最优方式之一。

思路分析

归并排序是将目标数组分成左右两个数组,左右两个数组必须是有序的,然后对这两个数组合并从而实现排序。对于任意的数组都可以将所有的数据分成若干个数组,每个数组中都只有一个元素,然后两两合并。(因此,归并排序的内存开销会比快速排序多)

代码实现private void mergeSort(int[] array, int left, int right) {        if (left >= right) {            return;

}        int mid = (left + right) >> 1;

mergeSort(array, left, mid);

mergeSort(array, mid + 1, right);

merge(array, left, mid + 1, right);

}    private void merge(int[] array, int left, int mid, int right) {        int leftSize = mid - left;        int rightSize = right - mid + 1;        int[] leftArray = new int[leftSize];        int[] rightArray = new int[rightSize];

System.arraycopy(array, left, leftArray, 0, leftSize);

System.arraycopy(array, mid, rightArray, 0, rightSize);        int index=left;        int leftIndex = 0;        int rightIndex = 0;        while (leftIndex

}else {                array[index++] = rightArray[rightIndex++];

}

}        while (leftIndex

}        while (rightIndex

}

}

测试代码@Test    public void testMergeSort() {        int[] array = new int[]{1, 3, 4, 10, 2, 5, 6, 9, 7, 8};

mergeSort(array, 0, array.length - 1);        for (int i = 0; i 

System.out.println(array[i]);

}

}

结果打印1

2

3

4

5

6

7

8

9

10

作者:夜亦明

链接:https://www.jianshu.com/p/31f982cac502

相关文章:

  • java string的实现_string类的实现
  • ant design 中,使用dva/fetch 设置导致无法从后台导出excel的问题
  • python引用计数实例_Python中的引用计数法
  • LoadRunner Vuser接口测试脚本 Post举例
  • java 类的继承_Java:类与继承
  • 浅谈对象的复制拷贝
  • java官方网站下载_java下载 7.0 官方版
  • asp.net的% %特定用法
  • java代码shiro注解_java相关:Shiro集成Spring之注解示例详解
  • Oracle Shared Pool机制之——Latches, Locks, Pins and Mutexes
  • java生成apk工具_用Android SDK Build Tools手动构建APK
  • C++常用数据类型
  • java的继承机制有什么好处_JAVA基础-继承机制
  • java类的三种特性_第10章 Java类的三大特性之一:多态
  • 微信公众平台接口测试账号申请
  • Angular 4.x 动态创建组件
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Nacos系列:Nacos的Java SDK使用
  • Python - 闭包Closure
  • select2 取值 遍历 设置默认值
  • Spark学习笔记之相关记录
  • spring boot 整合mybatis 无法输出sql的问题
  • 番外篇1:在Windows环境下安装JDK
  • 码农张的Bug人生 - 初来乍到
  • 扑朔迷离的属性和特性【彻底弄清】
  • 算法之不定期更新(一)(2018-04-12)
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • !!java web学习笔记(一到五)
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #大学#套接字
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (已解决)什么是vue导航守卫
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net操作Excel出错解决
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ 数据结构 - C++] AVL树原理及实现
  • []C/C++读取串口接收到的数据程序
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [30期] 我的学习方法
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [C/C++]关于C++11中的std::move和std::forward
  • [C++]STL之map
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [Excel VBA]单元格区域引用方式的小结