国内优秀网站网址怎样进行文化建设

bicheng/2026/1/24 14:58:41/文章来源:
国内优秀网站网址,怎样进行文化建设,安卓开发步骤,重庆网上商城网站建设文章主题#xff1a;复杂度详解#x1f331;所属专栏#xff1a;深入理解数据结构#x1f4d8;作者简介#xff1a;更新有关深入理解数据结构知识的博主一枚#xff0c;记录分享自己对数据结构的深入解读。#x1f604;个人主页#xff1a;[₽]的个人主页#x1f525;… 文章主题复杂度详解所属专栏深入理解数据结构作者简介更新有关深入理解数据结构知识的博主一枚记录分享自己对数据结构的深入解读。个人主页[₽]的个人主页 复杂度详解 前言算法效率如何分析一个算法的好坏算法的复杂度复杂度在校招中的考察 时间复杂度时间复杂度的概念大O的渐进表示法常见时间复杂度计算举例 空间复杂度常见复杂度对比结语 前言 复杂度是计算机领域表示所需资源达到某个大小量级的量度源自计算复杂性理论1 主要分为时间复杂度与空间复杂度等通常复杂度会被用来综合分析一个算法的好坏以下是我对复杂度的详细解释。 算法效率 如何分析一个算法的好坏 如何衡量一个算法的好坏呢比如对于以下斐波那契数列 long long Fib(int N) {if(N 3)return 1;return Fib(N-1) Fib(N-2); }斐波那契数列的递归实现方式非常简洁但简洁一定好吗那该如何衡量其好与坏呢 算法的复杂度 算法在编写成可执行程序后运行时需要耗费时间资源和空间(内存)资源等 。因此衡量一个算法的好坏一般是从时间和空间两个维度来衡量的即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算法的运行快慢而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机发展的早期计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。 复杂度在校招中的考察 时间复杂度 时间复杂度的概念 时间复杂度的定义在计算机科学中算法的时间复杂度是一个函数它定量描述了该算法的运行时间。一个算法执行所耗费的时间从理论上说是不能算出来的只有你把你的程序放在机器上跑起来才能知道。但是我们需要每个算法都上机测试吗是可以都上机测试但是这很麻烦所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比虽然每个语句的执行时间不同相同语句每次的执行时间也不同但是每次的差距不会很大语句的执行次数的多少能够大体地反映出一个程序所需要耗费的时间量级该算法所需的时间在多大的一个时间量级中一个时间量级能够反映算法运行的一个大概大小的时间区间算法中的基本操作的执行次数为算法的时间复杂度。 即找到一个算法中基本语句出现次数与问题规模N之间的数学表达式就是算出了该算法的时间复杂度。 // 请计算一下Func1中count语句总共执行了多少次 void Func1(int N) {int count 0;for (int i 0; i N ; i){for (int j 0; j N ; j){count;}}for (int k 0; k 2 * N ; k){count;}int M 10;while (M--){count;}printf(%d\n, count); }Func1执行的基本操作次数 F ( N ) N 2 2 ∗ N 10 F(N) N^2 2*N 10 F(N)N22∗N10 N 10 F(N) 130N 100 F(N) 10210N 1000 F(N) 1002010 实际中我们计算时间复杂度时我们其实并不一定要计算精确的执行次数而只需要大概执行次数那么这里我们使用大O的渐进表示法。 大O的渐进表示法 大O符号Big O notation是用于描述函数渐进行为的数学符号。 推导大O阶方法 1、用常数1取代运行时间中的所有加法常数。 2、在修改后的运行次数函数中只保留最高阶项比一定狭隘地指谁的次方项最高因为完全有可能项不是单纯的次方项的初等函数不能化简的表达形式最高阶项可直接简单地理解成是画函数图象时谁在正半轴上图象大部分时候比另一函数大谁就是复杂度大O的表示法当中的“最高次项”这里的最高次项是一种更加广义的、自由的、开阔的、凭一点感觉的、稍稍没有那么自由的表示方法这里的命名方法是根据初等函数的种类以及幂函数的次方项的多少来命名的这几种情况出现频率最高当然如果对数的底数不同以及真数的表达式不同也能够用来命名但一般这种情况出现的频率少就不做讨论了阶的分类根据表达式的初等函数的类型不同以及各初等函数的数据不同是可以分成很多种情况的一般复杂度的化简规则是都可以又能力将表达式化成一个单一的初等函数的形式的一般复杂度化简后表达式都会变成单一的一项不同项同阶的会被合并初等函数中的某一类型的两项各数据完全相同才叫同阶不同阶就按上述的简单万能判别方法谁在上多一些对整个表达式的结果影响大一些就会去选择两项或多项中的在输入规模的范围即各函数的定义域中居于上部最多分布的那一项去表达不同的输入规模的范围比较相同的几个不同阶的函数也可能会得到不同结果的最高阶项函数乘积形式时就会是两个初等函数相乘约不掉。 3、如果最高阶项存在且不是1则去除与这个项目相乘的常数。得到的结果就是大O阶。 使用大O的渐进表示法以后Func1的时间复杂度为 O ( N 2 ) O(N^2) O(N2) N 10 F(N) 100N 100 F(N) 10000N 1000 F(N) 1000000 通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项简洁明了地表示出了执行次数。 4、另外有些算法的时间复杂度存在最好、平均和最坏情况 最坏情况任意输入规模的最大运行次数(上界) 平均情况任意输入规模的期望运行次数 最好情况任意输入规模的最小运行次数(下界) 例如在一个长度为N数组中搜索一个数据x 最好情况1次找到 最坏情况N次找到 平均情况N/2次找到 在实际中一般情况关注的是算法的最坏运行情况大O渐进表示法是为确保其准确性表达方式是考虑最坏情况的严谨表示法所以数组中搜索数据时间复杂度为O(N) 常见时间复杂度计算举例 实例1 // 计算Func2的时间复杂度 void Func2(int N) {int count 0;for (int k 0; k 2 * N ; k){count;}int M 10;while (M--){count;}printf(%d\n, count); }实例2 // 计算Func3的时间复杂度 void Func3(int N, int M) {int count 0;for (int k 0; k M; k){count;}for (int k 0; k N ; k){count;}printf(%d\n, count); }实例3 // 计算Func4的时间复杂度 void Func4(int N) {int count 0;for (int k 0; k 100; k){count;}printf(%d\n, count); }实例4 // 计算strchr的时间复杂度 const char * strchr ( const char * str, int character );实例5 // 计算BubbleSort的时间复杂度 void BubbleSort(int* a, int n) {assert(a);for (size_t end n; end 0; --end){int exchange 0;for (size_t i 1; i end; i){if (a[i-1] a[i]){Swap(a[i-1], a[i]);exchange 1;}}if (exchange 0)break;} }实例6 // 计算BinarySearch的时间复杂度 int BinarySearch(int* a, int n, int x) {assert(a);int begin 0;int end n-1;// [begin, end]begin和end是左闭右闭区间因此有号while (begin end){int mid begin ((end-begin)1);if (a[mid] x)begin mid1;else if (a[mid] x)end mid-1;elsereturn mid;}return -1; }实例7 // 计算阶乘递归Fac的时间复杂度 long long Fac(size_t N) {if(0 N)return 1;return Fac(N-1)*N; }实例8 // 计算斐波那契递归Fib的时间复杂度 long long Fib(size_t N) {if(N 3)return 1;return Fib(N-1) Fib(N-2); }实例答案及分析 实例1基本操作执行了2N10次通过推导大O阶方法知道时间复杂度为 O(N)实例2基本操作执行了MN次有两个未知数M和N时间复杂度为 O(NM)实例3基本操作执行了10次通过推导大O阶方法时间复杂度为 O(1)实例4基本操作执行最好1次最坏N次时间复杂度一般看最坏时间复杂度为O(N)实例5基本操作执行最好N次最坏执行了(N*(N1)/2次通过推导大O阶方法时间复杂度一般看最坏时间复杂度为 O(N2)实例6基本操作执行最好1次最坏O(logN)次时间复杂度为 O(logN) pslogN在算法分析中表示是底数任意的N的对数有些地方会写成lgN数学中的lgN单纯只指底数为2的N的对数但是在时间复杂度中其代表底数任意的N的对数的logN的缩写形式的缩写本质是因为计算机中不好写出底数且时间复杂度本就是估算的形式所以就可以直接将任意底数的只有一个任意输入规模的输入规模表达式的对数形式全都缩写成logF(N)的形式方便表达的同时也符合了大O的渐进表达法表达时间复杂度的去掉影响不大的项简洁明了地表示出执行次数估算的特点。实例7通过计算分析发现基本操作递归了N次时间复杂度为O(N)。实例8通过计算分析发现基本操作递归了2N次时间复杂度为O(2N)。 空间复杂度 空间复杂度也是一个数学表达式是对一个算法在运行过程中临时占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间因为这个也没太大意义所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似一般也直接使用大O的渐进表示法。 注意函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定即空间复杂度会忽略已经在编译时就确定好的函数参数运行时申请的实参空间一些早就会确定好的函数运行所必要的局部变量以及一些函数运行时所必不可少的也是在编译时就确定好的寄存器的大小而只考虑那些不是在编译时就确定好的必要的内存大小而是运行时才考虑的主要存在与函数体当中的只参与函数运行原理的那些额外创造的空间可将其简单地理解为就是函数运行时才会创造的函数体当中的那些局部变量。当然一般我们是直接根据算法的思想来确定所开创空间的大小的而算法思想本质上就是分析的函数运行时的状态就和只分析函数运行时的函数体中所创造的局部变量的个数的效果本质上是如出一辙的不管时间还是空间复杂度只要单纯地根据算法的思想去简单地分析结果就一定会吻合运行时所消耗的时间与开创的额外空间因为是运行时才开创的有些甚至情况不同时都不会开创所以将运行时创建的空间叫作额外空间结果就一定不会出错。 实例1 // 计算BubbleSort的空间复杂度 void BubbleSort(int* a, int n) { assert(a);for (size_t end n; end 0; --end){int exchange 0;for (size_t i 1; i end; i){if (a[i-1] a[i]){Swap(a[i-1], a[i]);exchange 1;}}if (exchange 0)break;} }实例2 // 计算Fibonacci的空间复杂度 // 返回斐波那契数列的前n项 long long* Fibonacci(size_t n) {if(n0)return NULL;long long * fibArray (long long *)malloc((n1) * sizeof(long long));fibArray[0] 0;fibArray[1] 1;for (int i 2; i n ; i){fibArray[i] fibArray[i - 1] fibArray [i - 2];}return fibArray; }实例3 // 计算阶乘递归Fac的空间复杂度 long long Fac(size_t N) {if(N 0)return 1;return Fac(N-1)*N; }实例答案及分析 实例1使用了常数个额外空间所以空间复杂度为 O(1)实例2动态开辟了N个空间空间复杂度为 O(N)实例3递归调用了N次开辟了N个栈帧每个栈帧使用了常数个空间。空间复杂度为O(N) 常见复杂度对比 一般算法常见的复杂度如下 真实表达式大O的渐进表示法阶 5201314 5201314 5201314 O ( 1 ) O(1) O(1)常数阶 3 n 4 3n4 3n4 O ( n ) O(n) O(n)线性阶 3 n 4 n 5 3^n 4n 5 3n4n5 O ( n 2 ) O(n^2) O(n2)平方阶 3 l o g 2 n 4 3log_2n 4 3log2​n4 O ( l o g n ) O(logn) O(logn)对数阶 2 n 3 n l o g 2 n 14 2n 3nlog_2n 14 2n3nlog2​n14 O ( n l o g n ) O(nlogn) O(nlogn)nlogn阶 n 3 2 n 2 4 n 6 n^3 2n^2 4n 6 n32n24n6 O ( n 3 ) O(n^3) O(n3)立方阶 2 n 2^n 2n O ( 2 n ) O(2^n) O(2n)指数阶 结语 以上就是博主对复杂度的详解希望对你的数据结构的学习有所帮助看都看到这了点个小小的赞或者关注一下吧当然三连也可以~你的支持就是博主更新最大的动力让我们一起成长共同进步 计算复杂性理论Computational complexity theory是理论计算机科学和数学的一个分支它致力于将可计算问题根据它们本身的复杂性分类以及将这些类别联系起来。一个可计算问题被认为是一个原则上可以用计算机解决的问题亦即这个问题可以用一系列机械的数学步骤解决例如算法。 ↩︎

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

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

相关文章

网站整站模板江西网站建设

【C语言】——指针七: 前言一、 s i z e o f sizeof sizeof 与 s t r l e n strlen strlen 的对比1.1、 s i z e o f sizeof sizeof1.2、 s t r l e n strlen strlen1.3、 s i z e o f sizeof sizeof 和 s t r l e n strlen strlen 对比 二、数组和指针笔试题解析…

汝州市住房和城乡建设局网站小程序源码教程

free :观察内存使用情况 系统当中有 2848MB 左右的实体内存,我的 swap 有 1GB 左右, 那我使用free -m 以 MBytes 来显示时,就会出现上面的信息。Mem 那一行显示的是实体内存的量,Swap 则是内存交换空间的量。 total 是…

数据网站建设成本山东省住房城乡建设部网站

试卷代号:1260 软件工程 试题(半开卷) 2019年7月 一、选择题,请从四个可选项中选择正确答案。(60分,每题3分) 1.以下哪一项不是软件危机的表现形式( )。 A.成本高 B.生产…

网站都需要什么类别秦皇岛网站制作小程序开发

提示:接上文 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要&#xff0…

做pc端网站案例网站开发涉及到缓存吗

1.1 ZooKeeper 是什么 ZooKeeper 是 Apache 的顶级项目。ZooKeeper 为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,ZooKeeper 并没有直接采用 Paxos 算法&…

wordpress网站移植wordpress ip检测

原文网址&#xff1a;Java之泛型系列--继承父类与实现多个接口(有示例)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍java如何用泛型表示继承父类并实现多个接口。 用泛型表示某个类是某个类的子类或者实现了接口的方法为&#xff1a;<T extends A & B & C> 用…

企业网站建设 信息安全wordpress 获取当前位置

1. 模版法 该方法历史悠久&#xff0c;具体处理流程为采用一个html模版&#xff0c;将其中的关键字替换为我们希望的信息。 优点: 缺点: 所有的信息都要采取字符串批凑的方式来实现&#xff0c;比如需要一个列表&#xff0c;就需要拼凑字符串。问题是开发周期长&…

淮安网站建设服务wordpress上传ftp失败

Matplotlib颜色条配置 基本颜色颜色条选择配色方案颜色条刻度的限制与扩展功能的设置离散型颜色条 基本颜色 Matplotlib提供了8种指定颜色的方法&#xff1a; 在[0&#xff0c;1]中的浮点值的RGB或RGBA元组&#xff08;例如 (0.1, 0.2, 0.5) 或&#xff08;0.1&#xff0c; 0.…

嘉兴网站建设多少钱网络推广网站排名

随着科技的不断进步&#xff0c;API开发领域也逐渐呈现出蓬勃发展的势头。今天我将向大家介绍API接口&#xff0c;电商API接口具备独特的特点&#xff0c;使得数据获取变得更加高效便捷。 快速获取API数据——优化数据访问速度 传统的数据获取方式可能需要经过多个中介环节&…

网站建设流程新闻网页设计创建网站的基本流程

案例-标注k8s-node1是配置了SSD的节点 kubectl label node k8s-node1 disktypessd 查看标记 测试 将pod部署到disktypessd的节点上&#xff08;这里设置了k8s-node1为ssd&#xff09; 部署后查看结果-副本全都运行在了k8s-node1上—符合预期 删除标记 kubectl label node k8…

旅游网站建设价格建设网站有哪些目的是什么意思

设计模式--行为型--中介者模式 中介者模式定义结构案例实现优缺点使用场景 中介者模式 定义 又叫调停模式&#xff0c;定义一个中介角色来封装一系列对象之间的交互&#xff0c;使原有对象之间的耦合松散&#xff0c;且可以独立的改变它们之间的交互。 结构 抽象中介者角色…

wordpress新建网站后台无法登陆二手物品交换网站建设

题目 若某个家族人员过于庞大&#xff0c;要判断两个是否是亲戚&#xff0c;确实还很不容易&#xff0c;现在给出某个亲戚关系图&#xff0c;求任意给出的两个人是否具有亲戚关系。规定&#xff1a;x 和y是亲戚&#xff0c;y和z是亲戚&#xff0c;那么x和z也是亲戚。如果x&…

昆明建设招聘信息网站公众号怎么开

几年前&#xff0c;Google推出Python课堂。Google Python课堂:https://developers.google.com/edu/python/小编也整理了一下Google Python课堂的源码&#xff0c;里面有四个例子。logpuzzle这个例子主要是利用urllib模块做一个图片拼接的小游戏,主要是从一大堆的网页里面解析分…

网站SEO建设wordpress权限设置

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出小吉的问题 文章目录 &#x1f354;概述&#x1f354;索引结构⭐B-Tree多路平衡查找树&#x1f3f3;️‍&a…

主播网站建设建立免费网站

目录 前言 基本介绍 Explain结果列解读 概述 key key_len type extra 前言 我们在设计一个系统的时候&#xff0c;有时候通常为了基础业务&#xff0c;写出的查询sql语句并不高效&#xff0c;从而影响到用户使用系统的整体体验感不是很好&#xff0c;我们通常在系统的…

禅城网站建设营销传播的服务商

1 、概念&#xff1a; 随着软构件技术的发展&#xff0c;人们开始尝试利用软构件进行搭积木式的开发&#xff0c;即构件组装模 型。 在构建组装模型中&#xff0c;当经过需求分析定义出软件功能后&#xff0c;将对构件的组装结构进行设计&#xff0c; 将系统划分成一组构件的…

用群晖做网站服务器辽宁省建设厅官网

dpdk原理 1、操作系统、计算机网络诞生已经几十年了&#xff0c;部分功能不再能满足现在的业务需求。如果对操作系统做更改&#xff0c;成本非常高&#xff0c;所以部分问题是在应用层想办法解决的&#xff0c;比如前面介绍的协程、quic等&#xff0c;都是在应用层重新开发的框…

济南seo整站外包wordpress 一小时建站教程

深度学习踩坑记录 在跑一个深度学习的项目的时候&#xff0c;为了计算每个epoch的Loss&#xff0c;肯定要把每个batch_size的loss给加起来&#xff0c;就会有类似如下的代码 train_loss loss是的当时手抖&#xff0c;忘了是loss.item()&#xff0c;代码也能正常运行&#xf…

洛阳市建设工程评标专家网站假网站怎么做呢

文章目录 1.前言2.IOC容器2.1 BeanFactory 容器2.2 ApplicationContext 容器 3.Bean的常用属性配置4. 总结 1.前言 在之前的文章-IOC的快速入门中讲过Bean这个概念. 本来就来介绍容器与Bean的常用属性配置 在Spring框架中&#xff0c;Bean指的是被Spring加载生成出来的对象。 …

备案时网站名称可以重复吗网站后台上传用户界面不显示

类的__dict__返回的是&#xff1a;类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类的__dict__里的&#xff0c; 而实例化对象的&#xff1a;__dict__中存储了一些类中__init__的一些属性值。 import的py文件 __dict__返回的是&#xff1a;__init__的…