递归的归并排序
2015-08-01 16:01
381 查看
算法设计与分析p105页算法6.3归并排序,思想同样很简单,直接上代码
/** * * @author pc * 调用递归的归并排序 * */ public class MergeSort6_3 { public static void MergeSort(int a[],int low,int high){ if(high>low){ int mid=(low+high)/2; MergeSort(a, low, mid); MergeSort(a, mid+1, high); Merge(a,low,mid,high); } } public static void Merge(int a[],int low,int mid,int high){ int len=high-low+1; int[] b=new int[len]; int k=0; int t1=low; int t2=mid+1; while((t1<=mid)&&(t2<=high)){ if(a[t1]<=a[t2]){ b[k++]=a[t1]; t1++; } else{ b[k++]=a[t2]; t2++; } } if(t1<=mid){ while(t1<=mid){ b[k++]=a[t1]; t1++; } } if(t2<=high){ while(t2<=high){ b[k++]=a[t2]; t2++; } } for(int i=0;i<len;i++){ a[i+low]=b[i];//注意这里a数组的下表不应该从0开始 } } public static void main(String args[]){ int[] a={2,7,9,4,4,3,19}; MergeSort(a,0,6); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }
相关文章推荐
- 【转】C++ 堆和栈的故事
- scp 远程复制到本地
- 树莓派的简单应用
- squid 安装简单说明
- 1-2 操作系统是什么?作用?
- import静态的类
- 【转】MySQL修改字段默认值_mysql数据库_三联
- 面试题42反转单词顺序VS左旋字符串(循环左移字符串)
- Bootstrap组件之面板
- Picasso安卓图片加载认知和持续更新(持续更新贴)
- uva5318 The Goddess Of The Moon dp+矩阵快速幂
- android Json详解
- 占座……
- ZH奶酪:如何在Ubuntu上安装Java/管理多个JAVA/设置JAVA_HOME
- Java学习一:总体概述(原创)
- PHP文件上传优化
- 递归实现的二分搜索
- 树结构--Trie树
- 操作系统存储器管理知识点
- spring MVC的困惑 url-pattern的/和/*有区别