归并排序(自顶向下) java版本
来源:互联网 发布:淘宝上哪家玉器店靠谱 编辑:程序博客网 时间:2024/05/23 15:38
该算法思路如下:
1、新开辟一个辅助数组,方便归并时使用,由于归并时需要辅助空间,又防止在每次归并时都开辟一个新数组,所以提前申请一个同样大小空间的数组
2、将整个数组二分,分别递归排序前半部分与后半部分,之后将两部分归并
以上步骤二是分治法的典型思路
当我们的排序不断递归下去时,直到被拆分的数组中只有一个元素时,这时候数组便是有序的,之后和另一个相邻元素归并,。。直到前半部分有序,后半部分同样递归与归并,之后前半部分与后半部分归并,形成整个有序的一个数组。
归并的思路确实是相当精妙的。。。
以下为java版本的实现
public class merge_sort {//贵宾用的辅助数组private static int[] aux;public static void main(String[] args) {// TODO Auto-generated method stubint[] intarry={0,12,1,90,2,11,9,4,6,13,5,3,33};aux = new int[intarry.length];mergesort(intarry,0,intarry.length-1);for(int i:intarry){System.out.print(i);System.out.print(",");}}public static void mergesort(int[] intarry,int low,int high){if(high==low) return;int mid=low+(high-low)/2;mergesort(intarry,low,mid);mergesort(intarry,mid+1,high);merge(intarry,low,mid,high);}/*** * 原地归并 * @param intarrya 数组 * @param low 归并头节点 * @param mid 归并的分割点 * @param high 归并的尾节点 * */public static void merge(int[] intarry,int low,int mid,int high){int i=low;int j=mid+1;for(int k=low;k<=high;k++){aux[k]=intarry[k];}for(int k=low;k<=high;k++){if(i>mid){intarry[k] = aux[j++];}else if(j>high){intarry[k] = aux[i++];}else if(aux[i]<aux[j]){intarry[k]=aux[i++];}else{intarry[k]=aux[j++];}}}}其实归并的实现还有一种自底向上的实现与自顶向下的区别如下
自顶向下:
乱序5,4,2,1,6,3>>4,5,2,1,6,3>>4,5,1,2,6,3>>1,2,4,5,6,3>>1,2,4,5,3,6>>1,2,3,4,5,6
自底向上
乱序5,4,2,1,6,3>>4,5,2,1,6,3>>4,5,1,2,6,3>>4,5,1,2,3,6>>1,2,4,5,3,6>>1,2,3,4,5,6
0 0
- 归并排序(自顶向下) java版本
- 归并排序自顶向下
- 自顶向下归并排序
- 算法入门之归并排序(自顶向下方法)
- 算法系列—自顶向下归并排序(递归)
- 自顶向下的归并排序
- 归并排序 自顶向下实现
- 数据结构-归并排序-自顶向下
- 归并排序—自底向上和自顶向下
- 归并排序,自顶向下,自底向上
- 归并排序-自顶向下/自底向上
- 图示经典算法--自顶向下的归并排序
- 算法之自顶向下的归并排序
- 递归实现自顶向下的二路归并排序
- 自顶向下的归并排序和自底向上的归并排序
- 算法代码实现之归并排序,Java实现,自顶向下与自底向上两种方式
- 归并排序(自上向下)
- 自顶向下和自底向上的归并排序区别
- 1501102359-蓝桥杯-算法训练 大小写转换
- 嵌入式CGI开发之旅——6
- JAVA的StringBuffer类
- 嵌入式CGI开发之旅——7
- Oracle 中如何判断一个字符串是否为数字
- 归并排序(自顶向下) java版本
- 如何修改并获得dubbo服务的端口号
- JAVASE线程----常用方法
- DICOM:DCMTK工具包分析之dcmqrscp.exe、dcmqridx.exe、dcmqrti.exe
- 英语写作资料自我总结
- 提交数据处理关键字
- 玩转Windows/Linux tftp命令
- 国外程序员整理的Java资源大全
- 嵌入式CGI开发之旅——8