算法-归并排序

来源:互联网 发布:efm32编程 编辑:程序博客网 时间:2024/06/09 19:33
import java.util.Random;public class MergeSort {//归并public static  void merge(int a[],int left,int mid,int right){int i=left;int j=mid+1;int k=0;int temp []=new int[right-left+1];//把两个数组归并while(i<=mid&&j<=right){if(a[i]<=a[j]){temp[k++]=a[i++];}else{temp[k++]=a[j++];}}//把左边的数组加入到temp里面while(i<=mid){temp[k++]=a[i++];}//把右边的数组加入到temp里面while(j<=right){temp[k++]=a[j++];}//把temp数组复制到a数组中for (int k2 = 0; k2 < temp.length; k2++){ a[k2 + left] = temp[k2];}  }public static int[] mergeSort(int arr[], int left,int right){int mid=(left+right)/2;if(left<right){mergeSort(arr,left,mid);mergeSort(arr, mid+1, right);merge(arr,left,mid,right);}return arr;}public static  void main(String args[]){int a[]=new int[20];Random random=new Random();for(int i=0;i<a.length;i++){a[i]=random.nextInt(100);}int arr[]=mergeSort(a,0,a.length-1);for(int i=0 ;i<arr.length;i++){System.out.print(arr[i]+"\t");}System.out.println();}}

0 0