public class merge {

	public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]= new int[20];
int b[]=new int[a.length];
for(int i=0;i<a.length;i++) {
a[i]=(int) (Math.random()*100);
System.out.print(a[i]+" "); }
System.out.println();
sort(a,b,0,a.length-1);
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+" ");
} } private static void sort(int[] a,int []b,int left,int right) {
// TODO Auto-generated method stub
if(left<right){
int mid=(left+right)/2;
sort(a,b,left,mid); //对左半部分进行排序
sort(a,b,mid+1,right); //对右半部分进行排序
merge(a,b,left,right); //归并
}
} private static void merge(int[] a, int b[],int left, int right) {
// TODO Auto-generated method stub
copy(a,b,left,right);//将a数组中元素copy到b中 int rs=(left+right)/2+1;//右侧起始指针
int le=rs-1;//左侧结束指针
int i=left;//a数组指针,指向代排元素起始位置
while(left<=le&&rs<=right)//左边右边都不为空
if(b[left]>b[rs]) {
a[i++]=b[rs++];
}
else { a[i++]=b[left++]; } while(left>le&&rs<=right) {
//左边为空(其实这里可以去掉,因为原数组的元素位置已经正确)
a[i++]=b[rs++]; }
while(left<=le&&rs>right) {//右边为空 a[i++]=b[left++]; }
} private static void copy(int[] a, int[] b, int left, int right) {
// TODO Auto-generated method stub
for(int i=left;i<=right;i++) {
b[i]=a[i];
}
} }

最新文章

  1. Oracle数据库,模糊查询、去重查询
  2. 记录一个多核CPU负载不均衡问题(动态绑定进程到指定cpu:taskset -pc $CPU $PID)
  3. poj2387 Til the Cows Come Home 最短路径dijkstra算法
  4. 蓝桥杯---汉字取首字母(位运算 &amp; 水题)
  5. Codeforces Round #338 (Div. 2) E. Hexagons 讨论讨论
  6. Cortex-M3学习日志(六) -- ADC实验
  7. matlab图像显示程序模板
  8. lightoj1281快速幂+数学知识
  9. Ubuntu如何配置SSH免密登录
  10. 关于centos版本安装ethereum钱包
  11. 分布式锁实现秒杀 - 基于redis实现
  12. Vue 实现左边导航栏且右边显示具体内容(element-ui)
  13. 【THUSC2017】【LOJ2979】换桌 线段树 网络流
  14. MT【323】向量模的范围
  15. android studio 查看预览所有屏幕分辨率下的显示
  16. eclipse 安装python后pydev不出现
  17. Vue.js 60 分钟快速入门
  18. java结合XPATH解析XML
  19. Android Bug BaseExpandableListAdapter, getChildView
  20. canvas+js绘制序列帧动画+面向对象

热门文章

  1. python xml转excle
  2. JVM系列(三):JVM创建过程解析
  3. 如何在没有显示器的情况下,查看 Raspberry Pi 3的 IP 信息(Raspberry Pi 3 ,IP Address)
  4. ES2015 (ES6) 新特性: 20 个
  5. linux move file / folder bash command
  6. how to get window width in javascript
  7. news of javascript
  8. PAA房产智慧社区:解决社区管理服务的痛点难点
  9. ffmpeg中的日志控制、保存日志到指定文件、处理进度查询
  10. RTPS解析