public class MergeSort {

static int number=0;

public static void main(String[] args) {

int[] a = {26, 5, 98, 108, 28, 99, 100, 56, 34, 1 };

printArray("排序前:",a);

MergeSort(a);

printArray("排序后:",a);

}

private static void printArray(String pre,int[] a) {

System.out.print(pre+"\n");

for(int i=0;i

System.out.print(a[i]+"\t");

System.out.println();

}

private static void MergeSort(int[] a) {

// TODO Auto-generated method stub

System.out.println("开始排序");

Sort(a, 0, a.length - 1);

}

private static void Sort(int[] a, int left, int right) {

if(left>=right)

return;

int mid = (left + right) / 2;

//二路归并排序里面有两个Sort,多路归并排序里面写多个Sort就可以了

Sort(a, left, mid);

Sort(a, mid + 1, right);

merge(a, left, mid, right);

}

private static void merge(int[] a, int left, int mid, int right) {

int[] tmp = new int[a.length];

int r1 = mid + 1;

int tIndex = left;

int cIndex=left;

// 逐个归并

while(left <=mid && r1 <= right) {

if (a[left] <= a[r1])

tmp[tIndex++] = a[left++];

else

tmp[tIndex++] = a[r1++];

}

// 将左边剩余的归并

while (left <=mid) {

tmp[tIndex++] = a[left++];

}

// 将右边剩余的归并

while ( r1 <= right ) {

tmp[tIndex++] = a[r1++];

}

System.out.println("第"+(++number)+"趟排序:\t");

// TODO Auto-generated method stub

//从临时数组拷贝到原数组

while(cIndex<=right){

a[cIndex]=tmp[cIndex];

//输出中间归并排序结果

System.out.print(a[cIndex]+"\t");

cIndex++;

}

System.out.println();

}

}

java线程归并排序_Java-归并排序 - FeanLau的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java空格转义_java转义字符 - simpower的个人空间 - OSCHINA - 中文开源技术交流社区...

    1. 注意regex的写法 String   newName=name.replaceFirst("d:\\\\racke\\\\","http://192.168.0. ...

  2. java 原子量_Java原子量 - Rickxue的个人空间 - OSCHINA - 中文开源技术交流社区

    所谓的原子量即操作变量的操作是"原子的",该操作不可再分,因此是线程安全的. 为何要使用原子变量呢,原因是多个线程对单个变量操作也会引起一些问题.在Java5之前,可以通过vola ...

  3. java用来存储键值的容器是_Java容器 - osc_y0caef0i的个人空间 - OSCHINA - 中文开源技术交流社区...

    问题及答案来源自<Java程序员面试笔试宝典>第四章 Java基础知识 4.9容器 1.Java Collections框架是什么? Java Collections框架中包含了大量集合接 ...

  4. java 0l是多少_Java 构造器 - osc_0ltyoebk的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java 基础构造器 构造器: 构造对象. 1.构造方法的名字必须和类名字保持一致. 2.构造方法没有返回类型.(不是没有返回值!!!!!!!!!!!!!) 3.构造方法可以定义参数,也可以不定义,参 ...

  5. java关键字汉化_Java关键字 - 乱流的个人空间 - OSCHINA - 中文开源技术交流社区

    static关键字 (1)静态的意思.可以修饰成员变量和成员方法. (2)静态的特点: A:随着类的加载而加载 B:优先与对象存在 C:被类的所有对象共享 这其实也是我们判断该不该使用静态的依据. 举 ...

  6. java虚拟机jvm_java虚拟机jvm - zhuyuansj的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java内存结构和java内存模型的区别.往往很多人会搞起来.这里主要对这2种进行解释并进行操作.经实践会JVM调优和不会JVM调优差别确实很大,足足可以提升服务器一倍的性能. java内存结构:所谓 ...

  7. java -p_javap命令详解 - JackieYeah的个人空间 - OSCHINA - 中文开源技术交流社区

    一.用法 javap [ 选项 ] classes 二.描述 javap命令反汇编一个或多个类文件.它的输出由使用的选项决定.如果没有使用选项,javap命令将打印输出传递给它的类的包, protec ...

  8. java中的v递归的思想,Java中的递归思想 - osc_9lqilnv7的个人空间 - OSCHINA - 中文开源技术交流社区...

    递归: 递归的概念:方法自身调用自身则称为递归. 递归的分类: 间接递归:方法A调用方法B,方法B调用方法C,方法C调用方法A. 直接递归: 方法A调用方法A.(常用) 递归的注意事项: 递归一定要出 ...

  9. java hashmap 去重_HashMap去重 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...

    package util; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import ...

最新文章

  1. 为什么华为在发布会不提鸿蒙,华为又要开发布会?这次没有手机,鸿蒙系统要当主角!...
  2. The Road to Ryu: Hi Ryu
  3. PyTorch模型读写、参数初始化、Finetune
  4. html5 td中的5它空隙--待解决
  5. 计算机应用基础 a卷,计算机应用基础笔试A卷.doc
  6. Sql Server系列:键和约束
  7. 解决MySQL8小时自动断开连接的问题(DBCP配置)
  8. BSTR与CString之前的转换
  9. 排序算法汇总(C/C++实现)
  10. 融云通讯服务器,融云IM即时通讯功能接入和部署方式有哪些_如何收费_企业服务汇...
  11. 数据结构、算法、程序的关系
  12. 实时时钟芯片DS1302
  13. 笔记本电脑外接显示器显示不全
  14. php sapi全拼,php sapi
  15. 老师傅传授,数控车床对刀步骤
  16. POM文件配置的详解
  17. 2018年5月30日 星期三 天气多云
  18. Domain Adaptive SiamRPN++ for Object Tracking in the Wild
  19. 超全!元器件封装查询图表(收藏)
  20. 使用NetBox实现ASP网页封装为EXE教程

热门文章

  1. c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型
  2. linux创建zip+函数,linux+shell基础知识
  3. macbook 移动硬盘无法写入_如何升级MacBook笔记本的SSD硬盘-菜鸟折腾系列一
  4. deeplab运行指南
  5. 注解@Component方式代替xml装配bean
  6. ByteBuffer常用方法详解
  7. Word Count作业
  8. @Autowired @Resource @Inject 自动注入
  9. 2017.3.22-morning
  10. 【代码笔记】iOS-下拉选项cell