欢迎光临
我们一直在努力

如何利用java实现归并排序

如何利用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  arr[p2]) {
                temp[p++] = arr[p2++];
            } else {
                temp[p++] = arr[p1++];
            }
        }
        while (p1 

运行结果:

如何利用java实现归并排序插图1

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

分享本文到
赞(0)
未经允许不得转载:爱分享 » 如何利用java实现归并排序

评论 抢沙发

爱分享,生活常用知识教程百科分享、学习、交流平台

爱分享精选好货商城