合并排序算法

来源:互联网 发布:迅龙数据软件注册码 编辑:程序博客网 时间:2024/05/17 23:38
import java.util.Arrays;/* * 合并排序算法 * 思想:将待排序的序列分为大致相同的两个子序列,用合并排序分别对两个子序列进行排序 */public class MergeSort{//Merge函数是把两个部分排好序的序列合并为一个数组//例如数组a={2,3,8,9,1,4,5,7},然后将它合并为一个排好序的数组public static void merge(int a[],int low,int middle,int high){int i,j,k;k=0;    int b[]=new int[high-low+1];//数组b用来存放临时排好序的数    i=low;    j=middle+1;    while(i<=middle&&j<=high)    {    if(a[i]<=a[j])    b[k++]=a[i++];    else    b[k++]=a[j++];    }    while(i<=middle)    {    b[k++]=a[i++];    }    while(j<=high)        {    b[k++]=a[j++];    }    for(i=low;i<=high;i++)    {        a[i]=b[i-low];// b[2]     }}public static void sort(int a[],int low,int high){int middle;if(low<high){   middle=(high+low)/2;   //System.out.println(middle);  sort(a,low,middle);// System.out.println(a[middle+1]);  sort(a,middle+1,high); // System.out.println(a[high]);  merge(a,low,middle,high);}}    public static void  main(String[] args)    {    int a[]={2,3,1,4};          int middle=1;    merge(a,0,middle,a.length-1);    //sort(a,0,a.length-1);    System.out.println(Arrays.toString(a));        }}

 
原创粉丝点击