python 基础知识点(蓝桥杯python 科目个人复习计划22)

今日复习内容:基础算法中的时间复杂度

时间复杂度分析

  • 时间复杂度是衡量算法执行时间随输入规模增长的增长率。
  • 通过分析算法中基本操作的执行次数来确定时间复杂度‘
  • 常见的时间复杂度包括:常数时间O(1),线性时间O(n),对数时间O(log n),平方时间O(n^2)等。
  • 在计算的时候我们关注的是复杂度的数量级,并不要求严格的表达式

  • 一般我们关注的是最坏时间复杂度,用O(f(n) )表示,大多数时候我们仅需估算即可;
  • 一般来说,评测机1秒大约可以跑2e8次运算,我们要尽可能地让我们的程序运算规模的数量级控制在1e8以内。
  • 时间复杂度=O(x),x为程序运行计算次数
  • 只考虑如果同时存在多项,仅考虑最高项 

     (1) O(n^2 + n) = O(n^2)

       (2)    O(n + 5) = O(n)

       (3)    O(n^3 + n + 10) = O(n^3)


第一个例子

(我只是用它来计算,没有运算结果)

n = int(input())
a = list(map(int,input().split()))
tot = 0
for i in range(n):tot += a[i]
print(tot)

这个题的时间复杂度是O(n) 。

接下来我来讲一下过程:(结合我写的代码)

第一行:时间复杂度为O(1);

第二行:时间复杂度为O(n);

第三行:时间复杂度为O(1);

第四,五行(循环体):时间复杂度为O(n);

第六行:时间复杂度为O(1)。

所以目前它的时间复杂度为O(2n+3)

简单来说,就是读入数据(数据量为n)的那行和循环体(循环次数是n)的时间复杂度是n,别的都以1来计算。

然后,上面讲过一个式子:O(kn + k1) = O(n)(这里的k和k1都是常数)

所以,这个题的最终时间复杂度是O(n)。


第二个例子:


n = int(input())
a = list(map(int,input().split()))
tot = 0
for i in range(n):for j in range(n):tot += a[i]*a[j]
print(tot)

这个题的时间复杂度为O(n^2) 。

同样,我来解释一下:

第一行,时间复杂度为O(1);

第二行,时间复杂度为O(n);

第三行,时间复杂度为O(1);

接下来的三行(嵌套循环体),时间复杂度为O(n*n);

最后一行,时间复杂度为O(1)。

所以它目前的时间复杂度为O(n^2 + n + 3),然后上面有一个式子:O(k*n^3 + k1*n + 10) = O(n^3)(k和k1是常数),时间复杂度存在多项的情况下,取最高项,所以这个题最终的时间复杂度是O(n^2)。


第三个例子:

n = int(input())
a = list(map(int,input().split()))
tot = 0
for i in range(n):for j in range(i,n):tot += a[i]*a[j]
print(tot)

这个题和上一个的区别是循环体的内循环初始值变了。

以下是过程:

第一行,时间复杂度为O(1);

第二行,时间复杂度为O(n);

第三行,时间复杂度为O(1);

接下来的三行(嵌套循环体),单独分析一下内容

外循环i = 1,内循环执行(n-1)次;

外循环i = 2,内循环执行(n-2)次;

......

外循环i = n-1,内循环执行1次;

所以它的总时间复杂度为O((1+n-1)*n/2),即O(n*n/2)。

最后一行,时间复杂度为O(1)。

所以加起来,它的时间复杂度为O(n*n/2 + n + 3),还是用上面的公式,所以它最终的时间复杂度为O(n^2)。


第四个例子:

n = int(input())
a = list(map(int,input().split()))
tot = 0
for i in range(n):for j in range(0,n,i):tot += a[i]*a[j]
print(tot)

这个题与第三个题的区别是取值步长不同。分析方法一样。

 我再重复一遍过程,但区别很小。

第一行,时间复杂度为O(1);

第二行,时间复杂度为O(n);

第三行,时间复杂度为O(1);

接下来的三行(嵌套循环体),单独分析一下内容

外循环i = 1,内循环执行n次;

外循环i = 2,内循环执行(n/2)次;

......

外循环i = n,内循环执行(n/n)次;

所以它的时间复杂度为:O(n + n/2 + n/3 + n/4 +...... + n/n) = O(nlog(n))(这是调和级数)


归并排序时间复杂度 

  • T(n)记为n个元素的排序时间
  • 归并排序:先把n的问题分解成两个n/2的问题,然后把两个有序list合并。

 (1)先把n的问题分解成两个n/2的问题,T(n/2)*2

   (2)   然后把两个有序list合并,O(n)

  • 具体推导过程

       T(n)  = 2T(n/2) + O(n);

       T(n/2)  = 2T(n/4) + O(n/2) ;

       带回:   T(n)  = 4T(n/4) + O(n) + O(n);

       T(n)  = 8T(n/2) + O(n) + O(n) + O(n) = O(nlog(n));


OK,今天先写到这里,后续我会补充几个例题,下次继续,期末考还没结束,累死了!

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

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

相关文章

[GN] Vue3.2 快速上手 ---- 核心语法(终章)_3

文章目录 路由器工作模式命名路由to的三种写法嵌套路由路由传参query参数params参数 路由的props配置replace 和 push编程式导航重定向 总结 路由器工作模式 history模式 优点:URL更加美观,不带有#,更接近传统的网站URL。 缺点:后…

UIElement编辑器扩展 组件 Inspector

UIElement编辑器扩展 组件 Inspector https://docs.unity.cn/cn/2021.3/Manual/UIE-create-a-binding-uxml-inspector.html 简单开始 声明序列化VisualTreeAsset [SerializeField] VisualTreeAsset visualTree; 声明完,直接在脚本的Inspector面板,把你…

水塘抽样算法

水塘抽样算法 1、问题描述 最近经常能看到面经中出现在大数据流中的随机抽样问题 即:当内存无法加载全部数据时,如何从包含未知大小的数据流中随机选取k个数据,并且要保证每个数据被抽取到的概率相等。 假设数据流含有N个数,我…

JS中运算符的算术、赋值、+、比较(不同类型之间比较)、逻辑

在JavaScript中,运算符用于执行各种计算和操作。 算术运算符: :用于加法运算。 javascriptlet a 5; let b 3; let sum a b; // 结果: 8 -:用于减法运算。 javascriptlet difference a - b; // 结果: 2 *:用于乘法…

树莓派挂载fat32 u盘

通过fdisk -l 查到设备是sda1 sudo nano /etc/fstab 文件末尾添加: /dev/sda1 /home/pi/mydic_mount auto defaults,noexec,umask0000 0 0 参考文章树莓派linux系统 挂载硬盘(U盘)相关知识总结(五星推荐)_树莓派挂…

Rancher部署k8s集群测试安装nginx(节点重新初始化方法,亲测)

目录 一、安装前准备工作计算机升级linux内核时间同步Hostname设置hosts设置关闭防火墙,selinux关闭swap安装docker 二、安装rancher部署rancher 三、安装k8s安装k8s集群易错点,重新初始化 四、安装kutectl五、测试安装nginx工作负载 一、安装前准备工作…

SD-WAN企业组网场景深度解析

在当前快速发展的企业网络环境中,SD-WAN技术不仅仅是实现企业站点之间网络互通的关键,更是满足不同站点对因特网、SaaS云应用、公有云等多种企业应用和业务访问的理想选择。从企业的WAN业务需求出发,我们可以对SD-WAN的组网场景进行深度解析&…

参数校验: spring-boot-starter-validation

参数校验: spring-boot-starter-validation pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>应用 PostMapping("/login")public Re…

VIM工程的编译 / VI的快捷键记录

文章目录 VIM工程的编译 / VI的快捷键记录概述笔记工程的编译工程的编译 - 命令行vim工程的编译 - GUI版vim备注VIM的帮助文件位置VIM官方教程vim 常用快捷键启动vi时, 指定要编辑哪个文件正常模式光标的移动退出不保存 退出保存只保存不退出另存到指定文件移动到行首移动到行尾…

替代堆叠的新技术M-lag

M-lag&#xff1a;跨设备链路聚合组&#xff0c;是一种实现跨设备链路聚合的机制。将一台设备与另外两台设备进行跨设备链路聚合&#xff0c;从而把链路的可靠性从单板级提升到设备级&#xff0c;组成双活系统。 基本概念&#xff1a; peer-link链路&#xff1a;是一条聚合链…

[C#]winform部署官方yolov8-rtdetr目标检测的onnx模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【算法介绍】 RTDETR&#xff0c;全称“Real-Time Detection with Transformer for Object Tracking and Detection”&#xff0c;是一种基于Transformer结构的实时目标检测和跟踪算法。它在目标检测和跟踪领域…

Android学习(五):常用控件

Android学习&#xff08;五&#xff09;&#xff1a;常用控件 常用控件 TextViewEditTextButtonRadioButtonImageView 1、TextView控件 1.1、简介 TextView是用于显示文字(字符串)的控件&#xff0c;可在代码中通过设置属性改变文字的大小、颜色、样式等功能。 1.2、示例…

力扣刷MySQL-第五弹(详细讲解)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

编程笔记 html5cssjs 048 CSS链接

编程笔记 html5&css&js 048 CSS链接 一、设置链接样式二、文本装饰三、背景色四、链接按钮五、练习小结 通过 CSS&#xff0c;可以用不同的方式设置链接的样式。 一、设置链接样式 链接可以使用任何 CSS 属性&#xff08;例如 color、font-family、background 等&…

数据库系统概论-00引言

引言 -数据库系统的发展经历了三代演变 层次/网状数据库系统&#xff0c;关系数据库系统&#xff0c;新一代数据库系统。 -造就了四位图灵奖得主 C.W.Bachman,E.F.Codd,James Gray,M.R.Stoebraker.。 -发展了一门计算机基础学科 数据建模和DBMS核心技术为主&#xff…

Java 面向对象02 封装 (黑马)

人画圆&#xff1a;画圆这个方法应该定义在园这个类里面。 人关门&#xff1a;是人给了门一个作用力&#xff0c;然后门自己关上了门&#xff0c;所以关门的方法是在门的类里面 封装对象的好处&#xff1a; 调用Java自带的方法举例实现&#xff1a; 在测试类中&#xff0c;对其…

电脑pdf如何转换成word格式?用它实现pdf文件一键转换

pdf转word格式可以用于提取和重用pdf文档中的内容&#xff0c;有时候&#xff0c;我们可能需要引用或引用pdf文档中的一些段落、表格或数据&#xff0c;通过将pdf转换为可编辑的Word文档&#xff0c;可以轻松地复制和粘贴所需内容&#xff0c;节省我们的时间&#xff0c;那么如…

Element-UI 多个el-upload组件自定义上传,不用上传url,并且携带自定义传参(文件序号)

1. 需求&#xff1a; 有多个&#xff08;不确定具体数量&#xff09;的upload组件&#xff0c;每个都需要单独上传获取文件&#xff08;JS File类型&#xff09;&#xff0c;不需要action上传到指定url&#xff0c;自定义上传动作和http操作。而且因为不确定组件数量&#xff0…

Oracle 经典练习题 50 题

文章目录 一 CreateTable二 练习题1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数2 查询"01"课程比"02"课程成绩低的学生的信息及课程分数3 查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩4 查询平均成绩小于…

力扣精选算法100题——串联所有单词的字串(滑动窗口专题)

本题链接——串联所有单词的字串 本题和找到字符串中所有字母异位词题目非常相似&#xff0c;思路都是一样。通过自己的大脑能发现其中的相似之处。 第一步&#xff1a;了解题意 就按实例来分析吧&#xff0c;这样更通俗易懂。 words["ab","cd","ef…