归并排序 java语言

来源:互联网 发布:安装php基础环境搭建 编辑:程序博客网 时间:2024/06/01 20:52
<pre name="code" class="java">/* * 归并排序算法 */public class MergeSort {final static int MAX=0x7FFFFFFF;public static void main(String[] args) {int []a = {5,4,8,7,1,3,2,6,12,13,19,25,45,17};mergeSort(a,0,a.length-1);System.out.print("排序后数组:");for(int i:a) {System.out.print(i+" ");}}private static void mergeSort(int[] a, int p, int r) {if(p < r) {int q = (p+r)/2;mergeSort(a,p,q);mergeSort(a,q+1,r);mergeIn(a,p,q,r);}}private static void mergeIn(int[] a, int p, int q, int r) {int n1=q-p+1;int n2=r-q;int[] L = new int[n1+1];int[] R = new int[n2+1];for(int i=0;i<n1;i++) {L[i]=a[p+i];}for(int i=0;i<n2;i++) {R[i]=a[q+i+1];}L[n1] = MAX;R[n2] = MAX;int i=0,j=0;for(int k=p; k<=r; k++) {if(L[i]<=R[j]) {a[k]=L[i];i++;}else {a[k] = R[j];j++;}}}}


运行结果为:

1 2 3 4 5 6 7 8 12 13 17 19 25 45 



0 0
原创粉丝点击