package com.hanzheng.algorithm;
public class MergeSort {
public static void main(String[] args) {
int [] arr = {91,42,5,6,71,28,4,5,83,7,0};
Utils.print(arr,"排序前:");
process(arr,0,arr.length-1);
Utils.print(arr,"排序后:");
}
private static void process(int[] arr,int L, int R) {
if(L==R){
return;
}
int m = L+((R-L)>>1);
process(arr,L,m);
process(arr, m+1,R);
merge(arr, L, R, m);
}
private static void merge(int[] arr, int L, int R, int m) {
int i = 0;
int p1 = L;
int p2 = m+1;
int help[] = new int[R-L+1];
while(p1<=m&&p2<=R){
help[i++]=arr[p1]<=arr[p2]?arr[p1++]:arr[p2++];
}
while(p1<=m){
help[i++]=arr[p1++];
}
while(p2<=R){
help[i++]=arr[p2++];
}
for (int j = 0; j < help.length; j++) {
arr[L+j]=help[j];
}
}
}
数组的归并排序
于 2022-07-08 00:07:09 首次发布
该博客展示了如何用Java实现归并排序算法,对一个包含重复元素的整数数组进行排序。博客首先定义了一个`MergeSort`类,并在`main`方法中创建了一个未排序的数组,然后调用`process`方法进行递归排序。`process`方法通过分治策略将数组分为两部分,再调用`merge`方法合并已排序的子数组。`merge`方法通过比较两个子数组的元素,将较小的元素依次放入临时数组,最后将临时数组复制回原数组完成排序。
414

被折叠的 条评论
为什么被折叠?



