首页 > 编程语言 >有关归并排序-Java实现

有关归并排序-Java实现

时间:2023-03-30 18:11:57浏览次数:39  
标签:归并 leftIndex int mid param Java 排序

有关归并排序:其中的分治思想很值得参考:

 1 /**
 2      * 归并排序 块合并
 3      * @param num 目标的排序数组
 4      * @param leftIndex 传入的分治块的做左端索引
 5      * @param mid 中间索引
 6      * @param rightIndex 传入的分治块的做右端索引
 7      * @param temp 中间转储数组
 8      */
 9     public static void merge(int[] num,int leftIndex,int mid,int rightIndex,int[] temp){
10         int i=leftIndex;
11         int j=mid+1;
12         int t=0;
13         //每次都分成两组进行比较合并,每次合并一定是单侧有序的
14         while (i<=mid&&j<=rightIndex){
15             if (num[i]<num[j]){
16                 temp[t++]=num[i++];
17             }
18             else{
19                 temp[t++]=num[j++];
20             }
21         }
22         //剩余的进行合并
23         while (i<=mid){
24             temp[t++]=num[i++];
25 
26         }
27         while (j<=rightIndex){
28             temp[t++]=num[j++];
29         }
30         //数组进行归为
31         t=0;
32         int tIndex=leftIndex;
33         while (tIndex<=rightIndex){
34             num[tIndex++]=temp[t++];
35         }
36     }
37 
38     /**
39      * 分治合并
40      * @param num 目标排序数组
41      * @param leftIndex 左端索引
42      * @param rightIndex 右端索引
43      * @param temp 中间转储数组
44      */
45     public static void mergeSort(int[] num,int leftIndex,int rightIndex,int[] temp)
46     {
47         //递归分治、分模块
48         if (leftIndex<rightIndex){
49             int mid=(leftIndex+rightIndex)/2;
50             mergeSort(num,leftIndex,mid,temp);
51             mergeSort(num,mid+1,rightIndex,temp);
52             merge(num,leftIndex,mid,rightIndex,temp);
53 
54         }
55     }

 

标签:归并,leftIndex,int,mid,param,Java,排序
From: https://www.cnblogs.com/Mexcellent/p/17273897.html

相关文章

  • java
    Java目录Java数据类型基本数据类型转换获取变量数据类型long后面加Lfloat后面加F包装类使用包装类的原因?为什么要保留基本数据类型?包装类的自动拆装箱机制!变量类型静态变量成员变量局部变量变量默认初始值运算符算数运算符赋值运算符比较运算符逻辑运算符三元运算符位运算符原码......
  • 记录首次部署Linux服务器搭建Java项目的经历
    1.下载JDK1.8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html本次下载版本:jdk-8u361-linux-x64.tar.gz2.安装JDK1.8(1)复制“jdk-8u361-linux-x64.tar.gz”到Linux服务器的/usr/local/install文件夹下(2)执行【tar-zxvfjdk-8u361-linux-x64.tar.g......
  • Java并发编程——Thread详解
    前言操作系统中,一个进程往往代表着一个应用程序实例,而线程是进程中轻量级的调度单元,也可以看作是轻量级的进程,可以共享进程资源。下面简单介绍在操作系统中线程通用实现方式。接下来内容主要对线程模型进行简单介绍,然后对Java线程实现Thread类进行了解。一、线程模型暂且抛开Jav......
  • javascript大文件上传解决方案支持分片断点上传
    ​ 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。pub......
  • Java重写toString的意义
    Java重写toString的意义一.toString()方法toString()方法在Object类里定义的,其返回值类型为String类型,返回类名和它的引用地址.在进行String类与其他类型的连接操作时,自动调用toString()方法,demo如下:Datetime=newDate();System.out.println("time="+time);//相当于下......
  • Java学习日记4
    2023.3.29学习Java打卡JDBCJDBC(JavaDatabseConnectivity),Java-数据库连接,用Java语言操作数据库。本质:是sun公司定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中......
  • 更优雅的OrientDB Java API
    OrientDBAPIv1.0.0(OrientDB3.x)GiteeOrientDB介绍OrientDB是一个开源的NoSQL数据库管理系统,同时也是一款高性能的图数据库,支持ACID事务以及原子操作。官网图数据库介绍图数据库是以点、边为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。图概念对于图数......
  • JAVA~适合新手和复习~基础七(线程)
    Java多线程编程一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程和进程关系:一个进程包括由操作系统分配的内存空......
  • java 集合过滤出符合条件的List元素集合(lambda表达式)
    应用场景在项目开发的过程中,我们经常会对List集合进行按条件的过滤,筛选出我们想要的结果或者是符合项目需求的数据。比如:我们有一批学生对象,每个学生都有自己的性别属性,但......
  • Java 8 函数式编程
    1Java8函数式编程2java.util.function.*3@FunctionalInterface4都是函数接口,没有成员(状态)56高阶函数:参数或返回值为函数78方法引用:类名::方法......