码迷,mamicode.com
首页 > 编程语言 > 详细

2路归并排序

时间:2015-03-27 22:07:29      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

import java.util.Arrays;


public class Merge_sort {
public static void main(String[] args){
int[] nums={ 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 };
sort(nums,0,nums.length-1);
System.out.println(Arrays.toString(nums));
}

public static int[] sort(int[] num,int low,int high){
int mid=(low+high)/2;
if(low<high){ 
//左排序
sort(num,low,mid);
//右排序
sort(num,mid+1,high);
Merge(num, low,mid, high);
}
return num;
}

public static void Merge(int[] num,int low,int mid,int high){

int[] temp=new int[high-low+1];
int i=low;
int j=mid+1;
int k=0;
while(i<=mid&&j<=high){
if(num[i]<=num[j]){
temp[k]=num[i];
i++;
}else{
temp[k]=num[j];
j++;
}
k++;
}
while(i<=mid){
temp[k]=num[i];
k++;
i++;
}
while(j<=high){
temp[k]=num[j];
k++;
j++;
}

for(int m=0;m<temp.length;m++){
num[low++]=temp[m];

}
}

}

2路归并排序

标签:

原文地址:http://www.cnblogs.com/catWang/p/4372861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!