Java实现常见的排序算法---归并排序

来源:互联网 发布:微信for windows phone 编辑:程序博客网 时间:2024/04/30 00:11
 

/*归并排序*/
package sorts;

public class MergeSort{


    public void merge(int[] data) {
        int[] temp=new int[data.length];
        mergeSort(data,temp,0,data.length-1);
    }
   
    private void mergeSort(int[] data,int[] temp,int l,int r){
        int mid=(l+r)/2;
        if(l==r) return ;
        mergeSort(data,temp,l,mid);
        mergeSort(data,temp,mid+1,r);
        for(int i=l;i<=r;i++){
            temp[i]=data[i];
        }
        int i1=l;
        int i2=mid+1;
        for(int cur=l;cur<=r;cur++){
            if(i1==mid+1)
                data[cur]=temp[i2++];
            else if(i2>r)
                data[cur]=temp[i1++];
            else if(temp[i1]<temp[i2])
                data[cur]=temp[i1++];
            else
                data[cur]=temp[i2++];           
        }
    }

}

/*测试方法*/
package sorts;

public class TestSort {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
        int[] a={1,4,3,2,6,7,5,8,9,0};
        MergeSort mer=new MergeSort();
        mer.merge(a);
        for(int i=0;i<a.length;i++)
        {
         System.out.print(a[i]+" ");
        }
        System.out.println();
 }
}

原创粉丝点击