复杂度问题

数据结构中复杂度问题

复杂度问题想必是很多人最头疼的问题,下面就对其进行一些总结

复杂度分为:时间复杂度与空间复杂度

空间复杂度:算法运行时,占用多少内存,包括指令空间、数据空间和环境栈空间;

时间复杂度:执行程序所使用的时间量级,包括编译时间和运行时间。

评价一个算法的好坏,一般两种复杂度呈现线性增长是最好的。

常见的时间复杂度:

常数阶:O(1)

对数阶:O(log2n)

线性阶:O(n)

线性对数阶:O(nlog2n)

平方阶,立方阶:O(n^2),O(n^3)

K次方阶:O(n^k)

指数阶:O(2^n)

时间复杂度的计算方法:

1.去掉运行时间中的所有加法常数。

2.只保留最高阶项。 

3.如果最高阶项存在且不是1,去掉与这个最高阶相乘的常数得到时间复杂度

举个简单的例子:

int a=0

for(int i=1;i<n;i++){

    a++;

}

该例子中共运行了n-1次,去掉加法常数-1(因为n取较大时,常数对时间复杂度影响较小),进而可得知时间复杂度为n,用O(n)表示

再举例,若一个程序的复杂度为n^2/2+3显然先去掉常数项3,再保留最高项n^2/2,去掉最高项想成的常数1/2就可得时间复杂度O(n^2)

呀吼,是不是很简单,豁然开朗的赶脚。

下面给出一些经典算法复杂度的总结

排序法最差时间分析平均时间复杂度空间复杂度
冒泡排序 O(n2) O(n2) O(1)
快速排序 O(n2) O(n*log2n) O(log2n)~O(n)
选择排序 O(n2) O(n2) O(1)
二叉树排序 O(n2) O(n*log2n) O(n)
插入排序 O(n2) O(n2) O(1)
堆排序 O(n*log2n) O(n*log2n) O(1)
希尔排序 O O O(1)

最后希望可以帮到大家~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值