归并排序--JAVA代码实现

来源:互联网 发布:迈网络摄像头默认ip 编辑:程序博客网 时间:2024/06/06 08:57

归并排序流程:
这里写图片描述
实现代码:

import java.util.Arrays;public class MergeSort {    public static int[] mergeSort(int[] arr,int n) {        if (arr == null || arr.length < 2) {            return arr;        }        process(arr, 0, n - 1);        return arr;    }    public static void process(int[] arr, int left, int right) {        if (left == right) {            return;        }        int mid = (left + right) / 2;        process(arr, left, mid);//分解        process(arr, mid + 1, right);        merge(arr, left, mid, right);//归并    }    public static void merge(int[] arr, int left, int mid, int right) {        int[] help = new int[right - left + 1];        int l = left;        int r = mid + 1;        int index = 0;        while (l <= mid && r <= right) {            if (arr[l] <= arr[r]) {                help[index++] = arr[l++];            } else {                help[index++] = arr[r++];            }        }        while (l <= mid) {            help[index++] = arr[l++];        }        while (r <= right) {            help[index++] = arr[r++];        }        for (int i = 0; i < help.length; i++) {            arr[left + i] = help[i];        }    }    public static void main(String[] args) {        int[] arr = {5,6,1,2,3,4,7,8};        arr = mergeSort(arr, arr.length);        System.out.println(Arrays.toString(arr));    }}