前言

本文为本小白🤯学习数据结构的笔记,将以算法题为导向,向大家更清晰的介绍数据结构相关知识(算法题都出自🙌B站马士兵教育——左老师的课程,讲的很好,对于想入门刷题的人很有帮助👍)

前面说完了用master公式计算时间复杂度,下面通过归并排序来看一下,直接看代码:

package DiGui;

public class hhhguibing {
    
    public static void process(int[] arr,int L,int R){
        if (L==R) {
            return;
        }
        int mid=L + ((R-L)>>1);
        process(arr,L,mid);
        process(arr,mid+1,R);
        merge(arr,L,mid,R);
    }
    
    public static void merge(int[] arr,int L,int mid,int R){
        int[] help=new int[R-L+1];
        int i=0,p1=L,p2=mid+1;
        while(p1<=mid&&p2<=R){
            help[i++]=arr[p1]<arr[p2]?arr[p1++]:arr[p2++];
        }
        while(p1<=mid){
            help[i++]=arr[p1++];
        }
        while(p2<=R){
            help[i++]=arr[p2++];
        }
        for (i=0; i < help.length; i++) {
            arr[L+i]=help[i];
        }
    }
}

归并排序:

1)整体就是一个简单的递归,左边排好序,右边排好序,让其整体有序

2)让其整体有序的过程里用了排外序方法

在这里插入图片描述

从process方法中可以看出,a=2,b=2

merge方法中时间复杂度为O(n),d=1

归并排序时间复杂度为O( Nlog(N) )

小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)

…。。。。。。。。。。。…请添加图片描述

…。。。。。。。。。。。…

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐