感觉好久没有写排序程序了,C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(主要这个不是Array)。今天写了一下归并排序还有点费劲呀。晚上回来写写。

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

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

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

晚上写的java二路归并排序代码如下:

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]<a[j])b[t++]=a[i++];elseb[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<n;i++)a[i]=sin.nextInt();sort(0,n-1);System.out.println("排序结果是:");//输入要排序的数据for(int i=0;i<n;i++)System.out.println(a[i]+"  ");}public static void main(String[] args) {new MergeSort().run();}
}

转载于:https://www.cnblogs.com/xudong-bupt/p/3168571.html

二路归并排序 代码实例相关推荐

  1. 二路归并排序简介及其并行化

    1.归并排序简介 1.1算法思想 归并排序属于比较类非线性时间排序,比较类排序中性能最佳,应用较为广泛. 归并排序是分治法(Divide and Conquer)的一个典型的应用.将已有序的子序列合并 ...

  2. C++实现二路归并排序算法

    排序算法分为五大类,一共是有九种,如下: 插入类:直接插入排序.折半插入排序.希尔排序 交换类:冒泡排序.快速排序 选择类:简单选择排序.堆排序 归并类:二路归并排序 基数类:多关键字排序 九种算法的 ...

  3. 二路归并排序原理及JAVA实现

    归并类排序 基本思想:首先将原始无序序列划分为两个子序列,然后分别对每个子序列递归地进行排序,最后再将有序子序列合并. 归并排序基于分治策略思想.前面提到的基于分治的快速排序重在"分&quo ...

  4. 二路归并排序及时间复杂度分析

    序言 二路归并排序是一种效率极高的递归排序,将数组A化为有序数组时间复杂度为O(nlogn). 思想 二路归并排序分为拆分数组以及合并两个操作. 切分(自上而下)时间复杂度2*T(n/2) 每次从数组 ...

  5. 二路归并排序Python实现-III

    二路归并排序Python实现-III 归并排序 是一种 效率比较高并且稳定的算法.时间复杂度 O(NLog(N)),空间复杂度 O(N). 归并排序(Merge Sort)是建立在归并操作上的一种有效 ...

  6. 数据结构——二路归并排序和基数排序

    二路归并排序 算法原理 假设该数组为q,左边界为 l,右边界为 r,并设置临时数组tmp. 采用分治思想: 第一步:确定分界点: mid = l + r >>1. 第二步:递归划分左右两段 ...

  7. 排序算法之——二路归并排序

    排序算法之--二路归并排序 二路归并排序的思想: 一次排序过程,将已经各自有序的两个段的数据合并一个段,并且合并后依旧有序 开始,我们认为单个数据是有序的,一个数据就是一个段,一次排序之后,两个数据就 ...

  8. 二路归并排序c语言实现

    二路归并排序主要运用了"分治算法",分治算法就是将一个大的问题划分为n个规模较小而结构相似的子问题. 这些子问题解决的方法都是类似的,解决掉这些小的问题之后,归并子问题的结果,就得 ...

  9. 二路归并排序——python

    from __future__ import print_functiondef merge_sort(collection):"""二路归并排序(稳定排序),结果升序算 ...

  10. 分治法之二路归并排序

    文章目录 二路归并排序 一.大概思路 二.代码实现 2.打印结果 下一篇 二路归并排序 一.大概思路 二.代码实现 # -*- coding: utf-8 -*- """ ...

最新文章

  1. 【创新培育项目】为什么要组队參加比赛?及如何寻找一个合适的选题?
  2. 为什么SQL正在击败NoSQL,这对未来的数据意味着什么
  3. 运维记录 - 业务日志清理功能
  4. 分布式系统session一致性的问题
  5. IOS-C语言第8天,Struct (结构体)
  6. ASCII码排序(C++)
  7. Git的使用教程(一)
  8. 今日宜发布融资消息:明略、智行者、Video++分获BAT投资
  9. matlab转自张朋飞
  10. auto_ptr自动资源管理器
  11. devops什么意思_devops是什么意思
  12. Anylogic学习--------------数学函数
  13. 切割html字符串,使用javascript如何分割字符串?
  14. html转word 图片格式,html转word处理图片 java
  15. [破解] nasca drm file -ver1.00
  16. 谈谈我对软件工程专业的理解
  17. 上帝掷骰子吗–量子物理史话
  18. 物流行业智能化转型的幕后推手!盘点机器视觉物流分拣四大优势
  19. 成为专业程序员路上用到的各种优秀资料、神器及框架
  20. python有哪些配置文件格式_Python配置文件:任何文件格式推荐? INI格式还是合适吗?似乎相当老派...

热门文章

  1. Linux:shell变量功能和Bash shell的操作环境
  2. vscode怎样打开终端 使用命令行
  3. Futter基础第6篇: 实现网格布局【GridView、GridView.count、GridView.builder】
  4. linux实现设备在uboot状态下利用TFTP和NFS加载内核镜像和根文件系统
  5. git本地仓库基本使用(Repository)
  6. vue @blur v-model数据没有更新问题
  7. js中map和python中的map
  8. 夺命雷公狗---node.js---7fs模块初步
  9. poj 3678 Katu Puzzle 2-SAT
  10. HDOJ1181变形课 深搜回溯