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

(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. JAVA的instanceOf什么时候用
  2. 用MyEclipse开发Spring入门
  3. 最大整数扩展欧几里得
  4. Xamarin如何生成Android项目的APK
  5. scanf不可以读空格不可以读string
  6. Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面
  7. boost::regex模块实现以编程方式生成代码片段,以便剪切并粘贴到正则表达式源中测试程序
  8. python3爬虫初探(一)之urllib.request
  9. SAP CDS view里association和join的区别
  10. linux c++连接mysql示例
  11. WebSocket科普
  12. Redis:复制,第2部分——主从复制和Redis哨兵
  13. python语音分割_Python 牺牲性能以提升程序员的工作效率
  14. 使用CablleStatement调用存储过程
  15. dell-xps-8930 台式机双硬盘 双系统安装 win10+Ubuntu
  16. 怎么更改网络选项为家庭计算机,教你无法设定这是一台家庭计算机怎么操作
  17. 神一样的美国高中作文比喻集锦
  18. Android移动开发问题 AAPT: error: resource xml/11 (aka com.example.myapplication:xml/11) not found.
  19. stm32中spi可以随便接吗_STM32的SPI模式读写FLASH芯片全面讲解
  20. 泰坦尼克号 数据重构 + 可视化

热门文章

  1. java excel 转 图片_Java中excel转换为jpg/png图片 采用aspose-cells-18.6.jar
  2. 大华出入口管理系统H710服务器配置,DH-DSS-H710S2 大华出入口综合管理系统 人员车辆管理车场收费...
  3. 维修电工技能实训考核装置
  4. Matlab 2018b + vs2019
  5. 配音软件文字转语音有哪些?
  6. [网站加载优化]公共CDN库/Nginx启用Gzip/全站CDN加速
  7. python 12306登录_Python Selenium自动登录12306官网
  8. Ubuntu18.04下小米、TPLink、腾达USB无线网卡跳坑记录
  9. html页面到服务器上乱码,网页乱码问题
  10. python导入第三方库失败_史上最详细 Python第三方库添加方法 and 错误解决方法