【算法】1.时间复杂度

本文探讨编程艺术,重点在于算法复杂度,特别是时间复杂度。介绍了常见时间复杂度函数,如O(1), O(n), O(n²), O(nlogn)等,并讲解如何计算算法的时间复杂度,强调通过实例理解算法时间复杂度的重要性。同时提及空间复杂度,指出其与算法效率和存储的关系。" 117580354,10293865,移动端与PC端的吸顶效果实现,"['Android开发', '前端开发', 'iOS开发', 'CSS']
摘要由CSDN通过智能技术生成

站在巨人的肩膀上

面对码农这一说法 笔者是不认可的,编程是一门艺术。编程的根本是数据结构+算法。本文主要总结一下算法复杂度相关内容
在这里插入图片描述
在这里插入图片描述

时间复杂度

常见时间复杂度函数

常见的几个时间复杂度

类型意义举例
o(1)最低复杂度,常量值;也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变哈希算法就是典型的0(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的前提下)
o(n)数据量增大n,耗时也增大n遍历
o(n^2)对n个数排序,需要执行n*n次冒泡排序
O(logn)数据增大n备时,耗时增大logn倍(logn为以2为底,数据增大256倍,耗时增加八倍)二分查找
O(nlogn)nlogn,当数据增大256倍,耗时增大2568= 2048倍,高于线性低于平方归并排序

在这里插入图片描述
对于O(2^n)和O(n!)这里不做过多描述,算法研究上涉及较小

常见算法时间复杂度

在这里插入图片描述

时间复杂度的计算

在我们大概了解的上面介绍的时间复杂度的一些函数的时候,具体时间复杂度怎么计算来的呢,其实我们不要想的太复杂,一般我们把算法时间复杂度,计算到最后都会归总为类似图1的那几类,或者如下图对比的几个分类。下图为我们设计的一段算法程序,执行完成需要的执行次数和输入数量n的函数,并且统一归纳为相应的阶。一般我们程序里研究到nlogn阶即可,剩下的我们都可以不考虑。

在这里插入图片描述

下面贴一个详细的例子来加深一下算法时间复杂度计算的一个方法:

例子如下:
在这里插入图片描述

我们把每一段代码的时间复杂度相加得出:
在这里插入图片描述

抱着平常心,不要把算法问题想的太复杂,一步一步我们都能成为合格的程序设计者。

扩展

空间复杂度顾名思义就是算法占用存储空间,确切的说就是占用运行时内存空间的一个函数表达式。通常用S(n)=O(f(n))来表示。通常有以下几个阶O(1)、O(n)、O(n²)。对于空间复杂度我们掌握一些原则即可如 常见的很多算法用空间换时间 或者说 高效率低存储等等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值