最全数据结构与算法——算法(1),2024年最新5分钟搞定

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

根据输入数据的特点,时间复杂度具有最差平均最佳三种情况,一般我们考虑的时间复杂度都是最坏的那种情况,最坏时间复杂度是包含于最好、和平均两种情况的。

常见种类:
在这里插入图片描述
根据从大到小,常见的算法时间复杂度主要有:

📌

O

(

1

)

<

O

(

l

o

g

n

)

<

O

(

n

)

<

O

(

n

l

o

g

n

)

<

O

(

n

²

)

<

O

(

n

³

)

<

O

(

2

)

<

O

(

n

!

)

<

O

(

n

)

O(1)<O(log₂n)<O(n)<O(nlog₂n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)<O(nⁿ)

O(1)<O(log₂n)<O(n)<O(nlog₂n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)<O(nⁿ)

实例一:

void speaker(int n){
  int i = 1;
  while(i<=n){
    i = i\* 2;   //每次翻倍
    printf("我真的会谢 %d\n", i);
  }
  printf("我是真的栓Q %d\n", n);
}

时间复杂度:

📌

T

(

n

)

=

O

(

x

)

=

O

(

l

o

g

n

)

T(n) = O(x) = O(log₂n)

T(n)=O(x)=O(log₂n)

实例二:

void speaker(int flag[], int n){  //n为问题规模
  printf("你今天好吗? \n");
  for(int i=0; i<n; i++){   //从第一个元素查找
    if(flag[i]==n){   //找到元素n
      printf("我很好 %d\n", n);
      break;
    }
  }
}

//flag数组中乱序存放了1~n这些数
int flag[n] = {1.......n};
speaker(flag, n)

时间复杂度:

  • 最好情况:元素n在第一个位置(T(n) = O(1))
  • 最坏情况:元素n在最后一个位置(T(n) = O(n))
  • 平均情况:假设元素n在任意一个位置的概率相同为1/n(T(n) = O(n))

由于算法的时间复杂度考虑的只是对于问题规模n的增长率,则在难以精确计算基本操作执行次数(或语句频度)的情况下,只需求出它关于n的增长率或阶即可

👻空间复杂度

类似于算法的时间复杂度,我们还需要掌握的是算法的空间复杂度,其中n为问题的规模(或大小)

📌

S

(

n

)

=

O

(

f

(

n

)

)

S(n) = O(f(n))

S(n)=O(f(n))

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

)

S(n) = O(f(n))

S(n)=O(f(n))

[外链图片转存中…(img-JejfJBxS-1715806461088)]
[外链图片转存中…(img-cWC7PNlY-1715806461088)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值