package wck.sort;/**
* Created on 18/9/11.
*/
import java.util.Arrays;
/**
* @program: demo
* @description: 归并排序
* @author: wck
* @create: 2018-09-11 16:11
**/
public class MergeSort {
public static void sort(int[] arr){
int n = arr.length;
sort(arr, 0, n-1);
}
private static void sort(int[] arr , int l,int r){
//只有一个元素,或者没有。代表数据集为空
if (l >= r)
return;
int mid = (l+r)/2;
sort(arr, l, mid);
sort(arr, mid + 1, r);
merge(arr, l, mid, r);
}
private static void merge(int[] arr, int l, int mid, int r) {
int[] aux = new int[r-l+1];
for(int g=l;g<=r;g++)
aux[g-l] = arr[g];
int i =l,j=mid + 1;
for (int k =l; k<=r;k++){
if(i > mid){
arr[k] = aux[j-l];
j++;
}
else if(j > r){
arr[k] = aux[i-l];
i++;
}
else if(aux[i-l] < aux[j-l]){
arr[k]=aux[i-l];
i++;
}else{
arr[k]=aux[j-l];
j++;
}
}
}
// 测试MergeSort
public static void main(String[] args) {
int[] arr = {5,4,2,3,1,99,55,66,499,992,8090};
sort(arr);
for (int i=0;i<arr.length;i++)
System.out.println(arr[i]);
return;
}
}
算法基础之--归并排序
最新推荐文章于 2024-09-09 09:00:00 发布