您的位置 首页 技术

如何利用java实现归并排序

什么是归并排序? 归并排序是利用递归与分治的技术将数据序列划分为越来越小的半子表,再对半子表排序,最后再用递归方法将排好序的半子表合并成越来越大的有序序列。 核心思想 将两个有序的…

什么是归并排序?

归并排序是利用递归与分治的技术将数据序列划分为越来越小的半子表,再对半子表排序,最后再用递归方法将排好序的半子表合并成越来越大的有序序列。

核心思想

将两个有序的数列合并成一个大的有序的序列。通过递归,层层合并,即为归并。

(推荐教程:java快速入门)

实现代码:

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));    }}

运行结果:

1b69dfca1c4be892e9129a53e441c59.png

相关视频教程推荐:java视频教程

以上就是如何利用java实现归并排序的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/56285.html

为您推荐

返回顶部