码农知识堂 - 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)的方向走,更直观点,可以画一个走势图来对比

    空间复杂度

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

  • 相关阅读:
    遗传算法(GA)求解基于栅格地图的机器人最优路径规划,可以自行修改地图(提供MATLAB代码)
    1526_AURIX TC275 BootROM下
    【Java题】实现继承和多态的例子
    Eolink 征文活动- -专为开发者设计的一款国产免费 API 协作平台
    211. 添加与搜索单词 - 数据结构设计
    Unittest(单元测试)
    计算机网络
    华为智能驾驶方案剖析
    Linux中用嵌套方式打印
    react 组件间的通信
  • 原文地址:https://blog.csdn.net/weixin_46097842/article/details/126097177
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号