数据结构---复杂度(1)

1.时间复杂度

衡量算法的好坏,使用大写的o来表示时间复杂度,通俗的讲,就是一个算法执行的次数;

时间复杂度就是数学里面的函数表达式;本质上是一个函数;

下面举几个例子:

(1)这里的执行次数是N*N+N,当有几项进行相加的时候,我们选择次数最高的,因为随着N的变大,次数低的项对表达式的影响越来越小,所以我们可以忽略,写作时间复杂度的形式就是o(N*N);

(2)如果是2个循环,一个执行M次,一个执行N次,他们的阶数相同,我们就写作o(M+N);

(3)这里是常数次,可以忽略不计,统一使用o(1)进行表示,这里的o(1)不是代表1次,而是代表常数次,就是确定的有限次,条件怎么变化,运算次数是确定的;

(4)

这里的时间复杂度是o(N),因为N无限大的时候,N和2N是没有区别的,while循环里面是有限次

所以跟N比起来就显得微不足道了,也可以忽略;

(5)如果是对于一个字符串,我们想要寻找某个字符,如何计算他的时间复杂度呢?如果我们的

运气比较好,可能在字符串的开头就找到了,稍微差点就会在中间找到,运气特别差的话可能需要

遍历整个字符串才能找到这个指定的字符,对于时间复杂度而言,我们会按照最坏的打算,这里是

降低预期,底线思维,时间复杂度记作O(N);

(6)冒泡排序的时间复杂度:N个数字排序,实际上是等差数列的求和次数是N-1*N/2,高阶忽略系数就是N*N;

(7)二分查找的时间复杂度:二分查找找一次就缩小一般,找一次除以2,找一次除以2,2的x次方等于N,所以次数就是以2为底N的对数,写作O(log2N);

(8)

这个阶乘就比较难理解了,左边的调用N+1次,右边的每次都要经理N次循环,所以就是N*N;

2.时间复杂度的应用----消失的数字

(1)排序以后,判断下一个数字是不是上一个加上1,不是就找到了;

(2)使用0和所有的数字异或操作

比如这样的一串数据:013456789,先让0^每一个数字,进行遍历操作,^是符合交换律的,所以不需要担心他们出现的先后顺序,0^0=0-------0^1=1---------1^2=2--------以此推理,最后拿到的x就是9了,这里的size=9,循环从0开始,就是9次,我们使用i的话,需要和9^,这个时候的循环条件就是i<=size或者i<size+1;这里使用的是后者控制循环,相同的经过这两次循环里面的2次^就会变成0了,因为i是逐步递增的,所以数组里面少一个元素和i进行^得到0,这个数字在第二次的循环里面就被找到了。

(3)找到最小值,最大值,等差数列求和,减去所有的数值,就可以找到缺失的数字;

还是那013456789举例子吧,numsSize=10;我们进行求和的时候,首项0加上尾项numsSize,项数就是numsSize加上1了,x里面就是数列的和,利用循环减去每一个数字就找到了消失的数字。

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

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

相关文章

【Linux基础(三)】信号

学习分享 1、信号的基本概念2、查看信号列表3、常见信号名称4、signal库函数5、发送信号kill6、kill - signal &#xff08;无参信号&#xff09;示例6.1、kill - signal (不可靠信号)示例6.2、kill - signal (可靠信号)示例 7、信号分类7.1、信号运行原理分类7.2、信号是否携带…

解决 ucore lab3 无法触发 page fault 的问题

问题描述 完成清华大学操作系统实验课 ucore(x86) lab3 时&#xff0c;发现无法触发 page fault 异常&#xff0c;具体来说时 check_pgfault() 函数会在执行如下代码时报错 static void check_pgfault(void) {// ......uintptr_t addr 0x100;assert(find_vma(mm, addr) vma…

阿里云服务器“地域”怎么选择?2024新版教程

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

蓝桥杯2017年第八届真题-分巧克力

目录 题目描述 输入格式 输出格式 样例输入 样例输出 原题链接 代码实现 题目描述 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力&#xff0c;其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见&#xff0c;小明需…

【C++ STL详解】——string类

目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】&#xff08;底层operator【】函数&#xff09; ​编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…

git fatal: detected dubious ownership in repository at ‘xxx‘ 彻底解决方法

前言 在 windows 重置后&#xff0c; git 仓库无法正常使用 git 的所有 命令&#xff0c;运行任何 git 命令&#xff0c;都会提示如下&#xff1a; $ git log fatal: detected dubious ownership in repository at D:/rk/rk3568/nanopi/uboot-rockchip D:/rk/rk3568/nanopi/u…

SpringBoot学习之自定义注解和AOP 切面统一保存操作日志(二十九)

一、定义一个注解 这个注解是用来控制是否需要保存操作日志的自定义注解(这个类似标记或者开关) package com.xu.demo.common.anotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; i…

FTP服务器中文环境引起润日下载不了附件问题解析

FTP服务器中文环境引起润日下载不了附件问题解析 一、问题背景&#xff1a; 20240229日某农商行因为FTP下载功能有问题&#xff0c;导致当天所有涉及FTP文件下载的交易都不能正常使用&#xff0c;对于银行来说影响还是比较大。现将当天出问题的原因及处理过程解析如下&#x…

Linux第72步_使用“新字符设备的一般模板”编写LED驱动

使用“新字符设备的一般模板”编写LED驱动&#xff0c;使用寄存器直接开关灯。 1、创建LED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/” 输入“ls回车”&#xff0c;查看“/home/zgq/linux/Linux_Drivers/” 输入“mkdi…

优先完善功能测试,再考虑其他事项

软件测试是对项目研发过程产物&#xff08;文档、代码、程序等&#xff09;进行审查&#xff0c;保障产品质量的过程。 测试人员应具备从用户角度、开发角度和业务角度审查研发过程产物的能力&#xff0c;从而促使最终的产品达到用户、开发和业务三方要求。 测试人员的价值是…

(C语言)字符分类函数

目录 字符分类函数 1. iscntrl 2. isspace 3. isdigit 4. isxdigit 5. islower 6. isupper 7. isalpha 8. isalnum 9. ispunct 10. isgraph 11. isprint 字符分类函数 C语言中有一系列的函数是专门做字符分类的 &#xff0c;也就是一个字符是属于什么类型的字符的。…

安泰ATG-3090功率信号源的输出信号是什么意思

功率信号源是指能够提供电能输出的设备&#xff0c;其输出信号通常以功率的形式存在。功率信号源在各种应用中发挥着重要作用&#xff0c;涵盖了广泛的领域&#xff0c;包括电力系统、通信、电子设备等。以下是关于功率信号源输出信号的详细介绍。 功率信号源是一种能够将输入能…