归并排序就是采用分治法进行排序:

(1)将一个数组分成小的2个数组分别进行排序;

(2)之后将分出来的已经拍好序的数组进行合并;

import java.util.Scanner;

public class MergeSort {

int[] a=null;

int[] b=null;

int n;

Scanner sin=null;

MergeSort()

{

a=new int[10000];

b=new int[10000];

sin=new Scanner(System.in);

}

void sort(int start,int end)    //排序a[start...end]

{

int mid;

if(start >= end)    //只有一个元素的时候,直接返回

return ;

else

{

mid=(end-start)/2;    //将元素分成两半,分别排序

sort(start,start+mid);

sort(start+mid+1,end);

//归并两个有序的数组a[start...start+mid]和a[start+mid+1...end]

merge(start,start+mid,end);

}

}

void merge(int start,int mid,int end)    //归并

{

int t=start;

int i=start,j=mid+1;

while(i<=mid && j<=end)

{

if(a[i]

b[t++]=a[i++];

else

b[t++]=a[j++];

}

while(i<=mid)

b[t++]=a[i++];

while(j<=end)

b[t++]=a[j++];

for(i=start;i<=end;i++)    //排序后的内容写回a数组的相应位置去

a[i]=b[i];

}

void run()

{

System.out.print("输入要排序的数的个数:");

n=sin.nextInt();

for(int i=0;i

a[i]=sin.nextInt();

sort(0,n-1);

System.out.println("排序结果是:");

//输入要排序的数据

for(int i=0;i

System.out.println(a[i]+"  ");

}

public static void main(String[] args) {

new MergeSort().run();

}

}

java二路归并排序算法_java二路归并排序示例分享相关推荐

  1. 归并排序算法详解及示例

    归并排序 归并排序算法是在分治算法的基础上设计出来的一种排序算法,它可以可以对指定的序列完成升序,(由小到大),或降序(由大到小),时间复杂度为 O ( n l o g n ) O(nlogn) O( ...

  2. 【Java】排序算法 之 【归并排序】 总结

    目录 1.合并两个有序数组函数 2. 归并排序 3. 非递归实现归并排序 1.合并两个有序数组函数 在学习归并排序之前,我们需要掌握合并两个有序数组为一个有序数组的函数是如何实现的 /*** 合并两个 ...

  3. java 求交集 算法_Java计算交集,差集,并集的方法示例

    Java计算交集,差集,并集的方法示例 发布时间:2020-10-07 10:37:46 来源:脚本之家 阅读:106 作者:benbenkui 本文实例讲述了Java计算交集,差集,并集的方法.分享 ...

  4. java常见的算法_Java常用算法总结(转)

    交换排序 冒泡排序 将最后一个元素与倒数第二个元素对比,如果最后一个元素比倒数第二个小,则交换两个元素的位置,再用倒数第二个元素与倒数第三个元数对比,直到比到第一个元素,这样经过第一趟排序后得到第一个 ...

  5. java密码学原型算法_java密码学原型算法实现——双线性对.pdf

    java密码学原型算法实现--双线性对 Java 密码学原型算法实现--双线性对 1.背景介绍 如何使用jPBC 库进行双线性群初始化,包括: (1)质数阶双线性群(Prime-Order Bilin ...

  6. 归并排序算法、多路归并排序

    1. 归并排序 base case:if(left>=right) return; 归并排序左半边,归并排序右半边,合并 void merge_sort(vector<int> &a ...

  7. java克鲁斯卡尔算法_Java语言基于无向有权图实现克鲁斯卡尔算法代码示例

    所谓有权图,就是图中的每一条边上都会有相应的一个或一组值.通常情况下,这个值只是一个数字 如:在交通运输网中,边上的权值可能表示的是路程,也可能表示的是运输费用(显然二者都是数字).不过,边上的权值也 ...

  8. java快速查找算法_Java实现的快速查找算法示例

    本文实例讲述了Java实现的快速查找算法.分享给大家供大家参考,具体如下: 快速查找算法,可以根据想要找的是第几个大的数,每次循环都能固定下来一个数在数组完整排完序之后的位置,每次循环都能定一个数的位 ...

  9. java统计词频算法_java实现的统计字符算法示例

    本文实例讲述了java实现的统计字符算法.分享给大家供大家参考,具体如下: 统计字符: 概述:给定字符串,将它们进行分类,分别的去统计它们的个数及其字符 分类的有:字母 数字 中文 空格 等等 算法思 ...

  10. java gc回收算法_Java GC回收算法-判定一个对象是否可以回收

    开源推荐 推荐一款一站式性能监控工具(开源项目) Pepper-Metrics是跟一位同事一起开发的开源组件,主要功能是通过比较轻量的方式与常用开源组件(jedis/mybatis/motan/dub ...

最新文章

  1. 用javascript 禁止右键,禁止复制,禁止粘贴
  2. 解决报错:错误1130- Host xxx is not allowed to connect to this MariaDb server
  3. 【机器学习】为什么GBDT可以超越深度学习
  4. ffmpeg 命令画中画效果
  5. 视频动作检测最新发展调研(Action Detection)
  6. 梯度下降优化算法综述(转载)
  7. oracle影响性能,影响Oracle性能的几个重要参数
  8. 做好开源项目 需要坚持
  9. 远程管理软件Royal TSX for Mac
  10. 《Linux就该这么学》修正已知全部勘误,免费下载啦!
  11. linux jmeter 内存,怎么在Linux下改变JMeter内存
  12. Eclipse2020+Tomcat9.0+Maven Web配置!
  13. 【读书笔记->统计学】12-02 置信区间的构建-t分布概念简介
  14. Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
  15. java发送QQ群邮件,Java使用腾讯企业邮箱 、javamail 、 SSL 发送邮件/群发
  16. P2P担保的法律探析
  17. Ubuntu系统下制作USB启动盘
  18. 计算机应用教学,计算机应用软件教学方法
  19. 第16课:scratchjr猫与鸟的较量
  20. 精灵混合加密系统_为什么要加密数据?

热门文章

  1. 广州天河租房随笔记录
  2. 魔鬼数学——大数据时代,数学思维的力量
  3. 使用Aforge 开发的摄像头,有拍照,录像,设置帧率,分辨率等,以及对视频以及相机等的控制
  4. redies集群方案
  5. 土木专业应用计算机,计算机在土木中的应用
  6. JS生成二维码图片并下载,可带logo
  7. arduino蓝牙模块1
  8. ubuntu svn命令
  9. linux将字符串改大写,【已解决】makefile中把字符串转换为小写或大写
  10. 二本华南师范计算机考研,经验贴|19华师软工专硕|初试415,二本逆袭211