第一章——时间复杂度理解

news/2024/11/29 19:48:29/文章来源:https://www.cnblogs.com/byteboss/p/18577418

第一章——算法的时间复杂度

1.知道什么是时间复杂度

如何看算法的好坏,我们需要评价运行过程中所占用的计算资源

计算资源包括时间空间,我们现在主要考虑占用时间资源

时间资源简单说就是计算机处理的时间

计算机处理包括两大类(计算储存

这里我们先把程序设计语言中的语句分类一下

定义语句:(例如C语言中的 int a)不占用时间复杂度

控制流语句:顺序,条件分支,循环迭代,只是起到一个组织语句的作用,并不进行处理

赋值语句:求一个表达式的值,然后赋值给一个变量。是一个对算法进行很好度量的指标

所以求算法的时间复杂度就是看计算机关于计算和存储的语句(赋值语句)有多少条

赋值语句多算法时间就长

2.具体怎么求时间复杂度T(n)

我们看一段简单代码

def sum_of_n(n):total = 0for i in range(1, n + 1):total += ireturn total

第二行对total进行了赋值,只执行一次

第三行for循环为控制流语句,这里计算时间复杂度只计算控制流语句下面的语句,不计算语句本身(没有计算和赋值过程我们都不计算),也就是n*(for语句中语句的条数)

这里的时间复杂度用T(n)函数表示也就是T(n)=1+n

使用这个sun_of_n(n)函数时需要一个n,这里的n我们成为问题的规模

问题的规模:是指影响到这个程序运行时间的指标

我们求算法的时间复杂度函数也就是求运行时间与问题的规模(n)之间的函数关系

有时候决定算法时间复杂度的不仅是问题规模(n)具体数据也会影响算法运行时间

算法也有最好,最差,平均情况,平均状况体现了算法的主流性能

3.大O表示法(数量级函数)

基本操作数量函数T(n)的精确值并不是很重要,重要的是T(n)当中起决定性因素的主导部分

通俗来说就是对时间影响远远大于其他的那部分(这为数级)

例如:上面例子中的n与1相比较,当n越来越大,1显得无足轻重,我们就可以把这个1去掉,只保留n作为主导部分

用大O表示法表示上面的时间复杂度为O(n)

T(n)=5n**2+10n+100

当n越来越大的时候,10n和100常数对时间影响越来越小,n方的系数5对n方的增长速度来讲也没有影响,最终数量级函数为O(n**2),理解为n方 量级的时间复杂度

这里是几个数量级函数

1 常数
log(n) 对数
n 线性
n*log(n) 对数线性
n**2 平方
n**3 立方
2**n 指数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843612.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“4步实现”CAD模型与实物以图搜图的精准匹配,“6倍效率提升”机械加工比对

在机械制造与加工领域,设计图纸与实物的比对是确保产品质量的重要环节。然而,传统比对方式耗时长、易出错,严重影响生产效率。针对这一痛点,思通数科推出了一套基于大模型技术的智能比对系统,集成以图搜图、实物比对和多视图生成等功能,为用户带来高效、精准的解决方案。…

大数据学习记录,Python基础(3)

算术运算符a = 3 b = 4 print(a + b) # 7 print(a - b) # -1 print(a * b) # 12 print(a / b) # 0.75 print(a % b) # 3 print(a ** b) # 81 print(a // b) # 0 整除比较(关系)运算符注意:=是赋值运算符,==是比较运算符 比较运算符的结果一定是bool类型的扩展知识:比较两个…

ECharts 实战

EChart 资源Vue-EChart 不想封装 Echart, 可以选用这种方案。 Vue-ECharts 是一个 Vue 组件,旨在简化在 Vue 应用中集成 ECharts 的过程。它封装了 ECharts 的初始化和使用逻辑,用户只需要在 Vue 模板中添加组件并传递相应的 props,即可轻松创建图表。 支持Vue2 & Vue3…

腾讯云 AI 代码助手:单元测试应用实践

在软件开发这一充满创造性的领域中,开发人员不仅要构建功能强大的软件,还要确保这些软件的稳定性和可靠性。然而,开发过程中并非所有任务都能激发创造力,有些甚至是重复且乏味的。其中,编写单元测试无疑是最令人头疼的任务之一,它虽然对于验证软件组件是否按预期工作至关…

基于米尔全志T527开发板的FacenetPytorch人脸识别方案

本篇测评由优秀测评者“小火苗”提供。 本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志 T527开发板)的FacenetPytorch人脸识别方案测试。一、facenet_pytorch算法实现人脸识别 深度神经网络 1.简介 Facenet-PyTorch 是一个基于 PyTorch 框架实现的人脸识别库。它提供了…

Seata之小结和测试

目录一、本地事务二、分布式事务2.1、典型的分布式事务应用场景2.2、跨库事务2.3、分库分表2.4、微服务架构三、两阶段提交协议(2PC)2PC存在的问题四、Seata4.1、Seata的三大角色4.2、Seata AT模式的设计思路五、Seata快速开始Seata Server(TC)环境搭建步骤一:下载安装包步…

VS Code使用Git可视化管理源代码详细教程

思维导航前言 VS Code简介 环境准备 克隆GitHub中的存储库 查看当前所在分支 [*重要]实际工作开发四步曲(添,提,拉,推): 冲突解决 创建分支并推送到远程代码库 子分支开发完成后合并到主分支中VS Code Git提交修改历史记录查看(甩锅专用) 查看文件修改时间线对比文件修改…

二次函数+圆相结合的定值问题

来看一道初三接近5星难度的题目!高二圆锥曲线学到的定值问题与设而不求的方法,在初三压轴题中也会出现。专题:二次函数+圆 题型:动点问题+定值问题 难度系数:★★★★★ 【题目】 (24-25九年级湖北武汉)如图1,在平面直角坐标系$ xOy \(中,开口向…

2024-2025-1 20241401 《计算机基础与程序设计》 第十周学习总结

班级链接 2024计算机基础与程序设计作业要求 第十周作业作业目标 ①信息系统 ②数据库与SQL ③人工智能与专家系统 ④人工神经网络 ⑤模拟与离散事件 ⑥排队系统 ⑦天气与地震模型 ⑧图形图像教材学习内容总结 《计算机科学概论》第12、13、14章信息系统 信息系统: 帮助组织和…

数据结构查找

语雀链接:https://www.yuque.com/g/wushi-ls7km/ga9rkw/kl8h357ofcgocddz/collaborator/join?token=AwLuhwfJL8wLO2FH&source=doc_collaborator# 《数据结构查找》

ARM Trusted Firmware-A RISC-V OpenSBI 汇总

Trusted Firmware-A如图为 ARM TrustedFirmware (可信固件) 开源项目集合,它为带有 Exception Level 3 (EL3) Secure Monitor 的 ARM 架构 (Armv8-A、Armv9-A 和 Armv8-M 等) 提供了安全软件的实施参考实现。 1. TF-A 概述 Trusted Firmware-A (TF-A) project 是 ARM 可信固件…