Home >Java >Javagetting Started >How to implement merge sort using java

How to implement merge sort using java

王林
王林forward
2020-03-30 16:25:512203browse

How to implement merge sort using java

What is merge sort?

Merge sort uses recursion and divide-and-conquer techniques to divide the data sequence into smaller and smaller half sub-tables, then sort the half sub-tables, and finally use recursive methods to sort the sorted half sub-tables merge into larger and larger ordered sequences.

Core idea

Combine two ordered sequence into a large ordered sequence. Through recursion, layers are merged, which is called merging.

(Recommended tutorial: java quick start)

Implementation code:

import java.util.Arrays;

/**
 * @author god-jiang
 * @date 2020/1/13
 */
//归并排序,时间复杂度为O(N*logN),空间复杂度为O(N)
public class MergeSort {
    public static void MergeSort(int[] arr, int start, int end) {
        //分治的结束条件
        if (start >= end) {
            return;
        }
        //保证不溢出取start和end的中位数
        int mid = start + ((end - start) >> 1);
        //递归排序并且合并
        MergeSort(arr, start, mid);
        MergeSort(arr, mid + 1, end);
        Merge(arr, start, mid, end);
    }

    //合并
    public static void Merge(int[] arr, int start, int mid, int end) {
        int[] temp = new int[end - start + 1];
        int p1 = start;
        int p2 = mid + 1;
        int p = 0;
        while (p1 <= mid && p2 <= end) {
            if (arr[p1] > arr[p2]) {
                temp[p++] = arr[p2++];
            } else {
                temp[p++] = arr[p1++];
            }
        }
        while (p1 <= mid) {
            temp[p++] = arr[p1++];
        }
        while (p2 <= end) {
            temp[p++] = arr[p2++];
        }
        for (int i = 0; i < temp.length; i++) {
            arr[i + start] = temp[i];
        }
    }

    public static void main(String[] args) {
        int[] a = {2, 4, 6, 1, 3, 7, 9, 8, 5};
        MergeSort(a, 0, a.length - 1);
        System.out.println(Arrays.toString(a));
    }
}

Running results:

How to implement merge sort using java

Recommended related video tutorials: java video tutorial

The above is the detailed content of How to implement merge sort using java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete