首页 > 编程语言 > 详细

归并排序

时间:2016-11-25 12:14:10      阅读:228      评论:0      收藏:0      [点我收藏+]
主要思想是先对序列进行分割,然后再进行归并排序。
如一个数组[1,2,3,4,5,6]
第一次分割为[1,2,3],[4,5,6]
第二次分割为[1,2],[3],[4,5],[6]
第三次分割为[1],[2],[3],[4],[5,[6]
第一次归并排序为[1],[2];[4],[5]
.
.
.
以此类推

public
class MergeSort { private double[] bridge; public MergeSort(double [] sorted){ if(sorted.length==0){ throw new NullPointerException("size is null"); } int sorted_length=sorted.length; bridge=new double[sorted_length]; } public void mergeso(double [] obj,int left,int right){ while(left<right){ int center=(left+right)/2; mergeso(obj,left,center); mergeso(obj,center+1,right); merge(obj,left,center,right); } } public void merge(double [] obj,int left,int center,int right){ int mid=center+1; int tem1=left; int tem2=left; while(left<=center && mid<=right){ if(obj[left]<obj[mid]){ bridge[tem1++]=obj[left++]; } else{ bridge[tem1++]=obj[mid++]; } } while(left<=center){ bridge[tem1++]=obj[left++]; } while(mid<=center){ bridge[tem1++]=obj[mid++]; } copy(obj,tem2,right); } public void copy(double [] obj,int left,int right){ while(left<=right){ obj[left]=bridge[left]; left++; } } }

 

归并排序

原文:http://www.cnblogs.com/luo-mao/p/6100864.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!