数据结构04(Java)-- ( 归并排序及其时间复杂度)
·
前言
本文为本小白🤯学习数据结构的笔记,将以算法题为导向,向大家更清晰的介绍数据结构相关知识(算法题都出自🙌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) )
小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)
…。。。。。。。。。。。…
…。。。。。。。。。。。…
更多推荐
所有评论(0)