码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据结构与算法2-时间空间复杂度分析


    目录

    时间复杂度的意义

    常见的时间复杂度

    时间复杂度的计算

     时间复杂度排序

    空间复杂度


    进入时间和空间复杂度章节

    时间复杂度的意义

    对一个程序做测试时,其结果可能受限于测试数据、场景等情况,并不会很准确严谨,所以,自己用程序来验证分析是比较稳妥的,借此,可以将程序调整到效率最高

    时间复杂度以大写字母O表示

    常见的时间复杂度

    常数:O(1),1表示常数,所有能确定的数字,都用O(1),哪怕一个程序执行了10W次,只要能确定,那就是O(1),因为我们在计算时间复杂度的时候,一般都是计算比较大,并且不确定的情况,已经确定了,那就是O(1)

    对数:O(logn),举个例子

    1. int n = 100000000;
    2. int i = 1;
    3. while(i <= n) {
    4. i = i * 2;
    5. }

    假设n是未知的,求程序执行的次数,就可以有一个等式关系 2的x次方等于n,x就是执行的次数,所以x就等于log以2为底,n的对数

    忽略掉参数,那就是log n 

    线性:O(n),举个例子

    1. int num = 100000;
    2. int count = 0;
    3. for (int i = 0, i <= num, i++) {
    4. count = count + 1;
    5. }

    假设num未知,也就是说num越大,程序执行次数越多,忽略掉参数,就是O(n)

    线性对数:同样的,线性对数就是O(log n)

    平方:O(n^2),比如从1加到n,就是一个等差数列求和,也就是 n*(n+1)/2,忽略参数,就是n^2

     N次方:O(n^N)

    时间复杂度的计算

    从上面来看,整理下来,要计算一个时间复杂度,应该从最高阶计算,找运行最多的地方

    1、找有循环的地方

    2、找有IO的地方,包括网络请求,数据库的请求,磁盘交互

     时间复杂度排序

    O(1)>O(log n)>O(n)>O(n*log n)>O(n^2)>O(n^N)

    优化的目标就是往O(1)的方向走,更直观点,可以画一个走势图来对比

    空间复杂度

    空间复杂度就比较清晰,直接找开辟了空间的地方,比如创建了一个集合,创建了一个数组,开了多少了,那就是占用了多少,集合就看放进去了多少数据

  • 相关阅读:
    印尼封锁TikTok Shop后,数字商业将何去何从?
    若依注解学习(一)@Log
    I/O Passthru: Upstreaming a flexible and efficient I/O Path in Linux——泛读笔记
    【大数据】Doris 构建实时数仓落地方案详解(三):Doris 实时数仓设计
    一场网络攻击,可以“击垮”一个国家?【2022戴尔科技峰会预告】
    【ESP32_8266_WiFi (四)】闪存文件系统基本操作
    redis主从同步
    分享一个你很可能不知道的Java异常实现的缺陷
    一台抵得上多种测量仪器-B1500A半导体参数分析仪
    功率放大器在磁性微纳米颗粒微流体操控研究中的应用
  • 原文地址:https://blog.csdn.net/weixin_46097842/article/details/126097177
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号