做视频网站需要什么软件物流如何做网站
news/
2025/10/6 21:20:23/
文章来源:
做视频网站需要什么软件,物流如何做网站,做网站免费送域名,寻找客户的渠道和方法#x1f308;个人主页#xff1a;聆风吟 #x1f525;系列专栏#xff1a;图解数据结构、算法模板 #x1f516;少年有梦不应止于心动#xff0c;更要付诸行动。 文章目录 一. ⛳️算法的定义二. ⛳️算法的特性2.1 #x1f514;输入输出2.2 #x1f514;输入输出2.3 个人主页聆风吟 系列专栏图解数据结构、算法模板 少年有梦不应止于心动更要付诸行动。 文章目录 一. ⛳️算法的定义二. ⛳️算法的特性2.1 输入输出2.2 输入输出2.3 有穷性2.4 确定性2.5 可行性 三. ⛳️算法设计要求3.1 正确性3.2 可读性3.2 健壮性3.3 时间效率高和存储量低 四. ⛳️算法效率的度量方法4.1 事后统计方法4.2 事前分析估算方法 五. ⛳️算法的复杂度5.1 算法的复杂度的简单介绍5.2 算法复杂度在面试中考察 六. ⛳️算法的时间复杂度重点6.1 算法的时间复杂度定义6.2 大O的渐进表示法6.3 常见的时间复杂度6.4 最好情况、最坏情况与平均情况 七. ⛳️算法的空间复杂度全文总结 一. ⛳️算法的定义 算法是解决特定问题求解步骤的描述在计算机中表现为指令的有限序列并且每条指令表示一个或多个操作。 二. ⛳️算法的特性 算法具有五个基本特性输入、输出、有穷性、确定性和可行性。
2.1 输入输出 算法具有零个或多个输入尽管对于大多数算法来说输入参数都是有必要的但对于个别情况如打印hello world!这样的代码不需要任何输入参数因此算法的输入可以是零个。
2.2 输入输出 算法至少有一个或多个输出算法是一定需要输出的不需要输出你用这个算法干嘛呢输出的形式可以打印输出也可以是返回一个或多个值等。
2.3 有穷性 有穷性是指算法在执行有限的步骤之后自动结束而不会出现无限循环并且每一个步骤都在可接受的时间内完成。
2.4 确定性 确定性算法的每一步骤都具有确定的含义不会出现二义性。算法在一定条件下只有一条执行的路径相同的输入只能有唯一的输出结果。算法的每一步骤都被精确定义而无歧义。
2.5 可行性 可行性算法的每一步都必须是可行的也就是说每一步都能够通过执行有限次数完成。 三. ⛳️算法设计要求 算法不是唯一的。也就是说解决同一个问题可以有多种解决问题的算法。通常为了设计一个 “好” 的算法应考虑达到一下目标
3.1 正确性 正确性算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性能够得到问题的正确答案。但是算法的 “ 正确 ” 一词在用法上通常有很大差别大体分为一下四个层次
算法程序没有语法错误算法程序对于合法的输入数据能够产生满足要求的输入结果算法程序对于非法的输入数据能够得出满足规格说明的结果算法程序对于精心选择的甚至刁难的测试数据都有满足要求的输出结果。
对于这四层含义层次 1的要求最低但仅仅没有语法错误实在谈不上是好算法。这就是如同仅仅解决温饱不算是生活幸福一样。而层次 4是最难实现的我们几乎不可能逐一验证所有的输入都得到正确的结果。所以一般情况下我们通常把层次 3作为衡量一个算法算法是否合格的标准。
3.2 可读性 可读性算法的另一个目的是为了便于阅读来理解和交流。可读性高有助于人们理解算法晦涩难懂的算法往往隐含错误不易被发现并且难以调试和修改。
3.2 健壮性 健壮性当输入数据不合法时算法也能做出相关处理而不是产生异常或莫名其妙的结果。
3.3 时间效率高和存储量低 时间效率指的是算法的执行时间。对于同一个问题如果有多个算法能够解决执行时间短的算法效率高执行时间长的效率低。存储量需求指的是算法在执行过程中需要的最大空间主要指算法程序运行时所占用的内存或外部硬盘存储空间。因此设计算法时应尽量满足时间效率高和存储量低的需求。 四. ⛳️算法效率的度量方法 刚才我们提到了设计算法要提高效率。这里的效率大都指算法的执行时间。算法的执行时间需要依据该算法编制的程序在计算机上运行时所消耗的时间来度量的。而度量一个程序的执行时间通常有有两种方法 —— 事后统计方法和事前分析估算方法。
4.1 事后统计方法 事后统计方法这种方法主要是通过设计好的测试程序和数据利用计算机计时器对不同的算法编制的程序的运行时间进行比较从而确定算法效率的高低。但是这种方法明显是有很大的缺陷
必须要依据算法事先编制好程序这通常要需要花费大量时间和精力。如果编制出来发现它根本就是一团很糟糕的算法那不就是竹篮打水一场空了吗时间的比较依赖计算机硬件和软件等环境因素的影响有时会掩盖算法本身的优劣。算法的测试数据设计困难并且程序的运行时间往往还与测试数据的规模有很大关系效率高的算法在小的测试数据面前往往得不到体现。
基于事后统计方法有这样那样的缺陷我们一般不予以采纳而是采用另一种事前分析估算方法。
4.2 事前分析估算方法 事前分析估算方法在计算机程序编制前依据统计方法对算法进行估算。经过分析我们可以发现一个用高级语言程序语言编写的程序在计算机上运行时所消耗的时间取决于一下因素 解析 第1条是一个好算法的根本第2条要有软件来支持第4条要看硬件性能。因此抛开这些与计算机硬件、软件有关的因素一个程序的运行时间依赖于算法的好坏和问题的输入规模。所谓问题输入规模是指输入量的多少。 五. ⛳️算法的复杂度
5.1 算法的复杂度的简单介绍 算法在编写成可执行程序后运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏一般是从时间和空间两个维度来衡量的即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算法的运行快慢而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机发展的早期计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。 5.2 算法复杂度在面试中考察 由此可以看出算法复杂度的重要性所以说同学们下面的内容一定要好好学哦。言归正传接下来让我们开始具体讲解时间复杂度和空间复杂度。 六. ⛳️算法的时间复杂度重点
6.1 算法的时间复杂度定义 在计算机科学中算法的时间复杂度是一个函数它定量描述了该算法的运行时间。一个算法执行所耗费的时间从理论上说是不能算出来的只有你把你的程序放在机器上跑起来才能知道。但是我们需要每个算法都上机测试吗是可以都上机测试但是这很麻烦所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例算法中的基本操作的执行次数为算法的时间复杂度。 即找到某条基本语句与问题规模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;//执行 N*N 次}}for (int k 0; k 2 * N; k){count;//执行 2*N 次}int M 10;while (M--){count;//执行 10次}printf(%d\n, count);
}实际中我们计算时间复杂度时我们其实并不一定要计算精确的执行次数而只需要大概执行次数那么我们就可以使用大O的渐进表示法。看到这估计有同学该问了大O的渐进表示法是什么它又是如何推导的呢且听我慢慢道来让我们继续接着向下面学习。 6.2 大O的渐进表示法 大O符号big O notation是用于于描述函数渐进行为的数学符号。 推导大O阶方法 1用常数1取代运行时间中的所有加法常数。 2 在修改后的运行次数函数中只保留最高阶项。 3如果最高阶项存在且其系数不是1则去除与这个项相乘的系数。得到的结果就是大O阶。 结合上面示例 使用大O的渐进表示法以后Func1的时间复杂度为
通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项简洁明了的表示出了执行次数。 6.3 常见的时间复杂度 常见的时间复杂度如下表所示 注对数在文本中不好表示以 2 为底的对数通常简写为(logn) 。 常用的时间复杂度所耗费的时间从小到大依次是 O(1) O(logn) O(n) O(nlogn) O(2n) O(n3) O(2n) O(n!) 6.4 最好情况、最坏情况与平均情况 另外有些算法的时间复杂度存在最好、平均和最坏情况 最坏情况任意输入规模的最大运行次数(上界)平均情况任意输入规模的期望运行次数最好情况任意输入规模的最小运行次数(下界) 例如在一个长度为N数组中搜索一个数据x 最好情况1次找到 最坏情况N次找到 平均情况N/2次找到 在实际中 一般在没有特殊说明的情况下关注的都是算法的最坏运行情况所以数组中搜索数据时间复杂度为O(N)。 七. ⛳️算法的空间复杂度
算法空间复杂度的定义
空间复杂度也是一个数学表达式是对一个算法在运行过程中额外临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空间因为这个也没太大意义所以 空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似也使用大O渐进表示法。 注意 函数运行时所需要的栈空间存储参数、局部变量、一些寄存器信息等在编译期间已经确定好了因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。 全文总结
本文主要讲解
算法的定义算法是解决特定问题求解步骤的描述在计算机中表现为指令的有限序列并且每条指令表示一个或多个操作。算法的特性有穷性、确定性、可行性、输入、输出。算法的设计要求正确性、可读性、健壮性、高效率和低存储量需求。算法的度量方法事后统计方法、事前分析估算方法。推导大O阶时间复杂度空间复杂度 今天的干货分享到这里就结束啦如果觉得文章还可以的话希望能给个三连支持一下聆风吟的主页还有很多有趣的文章欢迎小伙伴们前去点评您的支持就是作者前进的最大动力
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929718.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!