排序算法-归并排序MergetSort

2021-06-05 00:05

阅读:575

标签:sys   一个   size   class   技术   lazy   方向   java   sort   

归并排序介绍

一种分而治之思想

归并排序步骤

  1. 从下往上的归并排序(自下而上的迭代)

  2. 从上往下的归并排序(自上而下的递归):它与"从下往上"在排序上是反方向的。它基本包括3步:
    ① 分解 -- 将当前区间一分为二,即求分裂点 mid = (low + high)/2;
    ② 求解 -- 递归地对两个子区间a[low...mid] 和 a[mid+1...high]进行归并排序。递归的终结条件是子区间长度为1。
    ③ 合并 -- 将已排序的两个子区间a[low...mid]和 a[mid+1...high]归并为一个有序的区间a[low...high]。

技术图片

时间复杂度

平均时间复杂度 O(nlogn)

最坏时间复杂度 O(nlogn)

最好时间复杂度 O(nlogn)

该算法数据稳定

伪代码

function mergeSort
if left

代码

package Sort;

import java.util.Arrays;

public class MergeSort2 {
    public static void main(String[] args) {
        int[] arr = {10,-1,-3,13,234,35,-9,3};
        System.out.println(Arrays.toString(arr));
        int[] temp= new int[arr.length];
        mergeSort(arr,0,arr.length-1,temp);
        System.out.println(Arrays.toString(arr));
    }
    public static void mergeSort(int[] arr,int left,int right,int[] temp){
        if(left

参考:https://www.cnblogs.com/skywang12345/p/3602369.html

排序算法-归并排序MergetSort

标签:sys   一个   size   class   技术   lazy   方向   java   sort   

原文地址:https://www.cnblogs.com/youngst/p/14639145.html


评论


亲,登录后才可以留言!