首页 > 编程语言 >软考15——算法

软考15——算法

时间:2024-10-16 21:11:38浏览次数:7  
标签:15 渐进 复杂度 软考 算法 时间 输入

算法的特性
文老师软考教育
◆算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要特性。(1)有穷性。一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
(2)确定性。算法中的每一条指令必须有确切的含义,理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
(3)可行性。一个算法是可行的,即算法中描述的操作都可以通过已经实现的基
本运算执行有限次来实现。
(4)输入。一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
(5)输出。一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的
2
算法的复杂度
文老师软考教育
◆算法的时间复杂度分析:主要是分析算法的运行时间,即算法执行所需要的基本操作数。不同规模的输入所需要的基本操作数是不相同。在算法分析中.可以建立以输入规模n为自变量的函数T(n)来表示算法的时间复杂度。
◆即使对于相同的输入规模,数据分布不相同也影响了算法执行路径的不同,因此所需要的执行时间也不同。根据不同的输入,将算法的时间复杂度分析分为3 种情况:最佳情况、最坏情况、平均情况。
◆渐进符号:以输入规模n为自变量建立的时间复杂度实际上还是较复杂的,例如an2+bn+c,不仅与输入规模有关,还与系数a、b和c有关。此时可以对该函数做进一步的抽象,仅考虑运行时间的增长率或称为增长的量级,如忽略上式中的低阶项和高阶项的系数,仅考虑n^2。当输入规模大到只有与运行时间的增长量级有关时,就是在研究算法的渐进效率。也就是说,从极限角度看,只关心算法运行时间如何随着输入规模的无限增长而增长。下面简单介绍3种常用的标准方法来简化算法的渐进分析。

算法的复杂度
文老师软考教育
◆算法的时间复杂度分析:主要是分析算法的运行时间,即算法执行所需要的基本操作数。不同规模的输入所需要的基本操作数是不相同。在算法分析中,可以建立以输入规模n为自变量的函数T(n)来表示算法的时间复杂度。
◆即使对于相同的输入规模,数据分布不相同也影响了算法执行路径的不同,因此所需要的执行时间也不同。根据不同的输入,将算法的时间复杂度分析分为3种情况:最佳情况、最坏情况、平均情况。
◆渐进符号:以输入规模n为自变量建立的时间复杂度实际上还是较复杂的,例如an2+bn+c,不仅与输入规模有关,还与系数a、b和c有关。此时可以对该函数做进一步的抽象,仅考虑运行时间的增长率或称为增长的量级,如忽略上式中的低阶项和高阶项的系数,仅考虑n^2。当输入规模大到只有与运行时间的增长量级有关时,就是在研究算法的渐进效率。也就是说,从极限角度看,只关心算法运行时间如何随着输入规模的无限增长而增长。下面简单介绍3种常用的标准方法来简化算法的渐进分析。
2
文老师软考教育
算法的复杂度
(1)0记号。定义为:给定一个函数g(n),O(g(n))={f(n):存在正常数c和nO,使得对所有的n≥no,有0≤f(n)≤g(n)},如图(a)所示。0(g(n))表示一个函数集合,往往用该记号给出一个算法运行时间的渐进上界。考试中一般只涉及到0符号。(2)Q记号。定义为:给定一个函数g(n),Q(g(n))={f(n):存在正常数c和nO,使得对所有的n≥no,有0≤g(n)sf(n)],如图(b)所示。Q(g(n))表示一个函数集合,往往用该记号给出一个算法运行时间的渐进下界。
(3)日记号。定义为:给定一个函数g(n),O(g(n))=[f(n):存在正常数c1,、c2和no,使得对所有的n≥n0。,有0≤c1g(n)≤f(n)≤c2g(nJ]},如图(c)所示。θ(g(n))表示一个函数集合,往往用该记号给出一个算法运行时间的渐进上思和渐进下史即渐进紧致界。

标签:15,渐进,复杂度,软考,算法,时间,输入
From: https://www.cnblogs.com/Lyh3012648079/p/18470926

相关文章

  • 代码随想录算法训练营 | 300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数
    300.最长递增子序列题目链接:300.最长递增子序列文档讲解︰代码随想录(programmercarl.com)视频讲解︰最长递增子序列日期:2024-10-16想法:dp[i]表示以nums[i]结尾的最长子数列长度,需要知道i之前的j的dp[j],找到最大的dp[j],再加1,初始化都为1。Java代码如下:classSolution{pub......
  • Java算法竞赛之HashMap常用API--哈西表!
    在Java算法竞赛中,HashMap是一个非常重要的数据结构,它提供了许多有用的API来方便地进行键值对的存储、检索和更新。除了getOrDefault方法外,HashMap还有其他一些常用的API。以下是一些主要的HashMapAPI及其在算法竞赛中的常见用法:put(Kkey,Vvalue)作用:将指定的键与值放入H......
  • 代码随想录算法训练营day17| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜
    学习资料:https://programmercarl.com/0654.最大二叉树.html#算法公开课用前序遍历构造二叉树二叉搜索树的特点,其左节点的值<每个节点的值<其右节点的值,且根节点的值大于它的左子树的所有节点的值,小于它右子树的所有节点的值,其他同理。二叉搜索树的搜索和验证时不关心遍历顺序,因......
  • 算法思想——单调栈及其运用实例
    单调栈的定义单调栈是一种数据结构,它维护了一个元素序列,这个序列在栈内要么单调递增,要么单调递减。在单调栈中,新元素的插入操作会遵循特定的规则:对于单调递增栈,只有当新元素大于或等于栈顶元素时,才能将其压入栈中;对于单调递减栈,则相反,只有当新元素小于或等于栈顶元素时,才......
  • 20222315 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容1.使用netcat进行虚拟机和主机的连接,cron启动周期性定时任务。2.使用socat让虚拟机操作主机,并调用提前准备的程序,启动任务计划。3.使用MSFmeterpreter(或其他软件)生成后门程序,利用ncat传送到主机让主机运行后门程序,虚拟机获取主机shell。4.使用MSFmeterpreter(或其他......
  • 【C++】精妙的哈希算法
    ......
  • 大模型量化算法之Smoothquant
    SmoothQuant:AccurateandEfficientPost-TrainingQuantizationforLargeLanguageModels发表于ICML20238-bitweight,8-bitactivation(W8A8)训练后量化方法(PTQ)量化的部分是线性层以及矩阵乘法,LayerNorm以及Softmax还是以更高精度的半精度浮点数F......
  • Javascript算法——二分查找
    1.数组1.1二分查找1.搜索索引开闭matters!!![left,right]与[left,right)/***@param{number[]}nums*@param{number}target*@return{number}*/varsearch=function(nums,target){letleft=0;letright=nums.length-1;//[left,right],相等时......
  • leetcode算法题 437.路径总和
    题目描述给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例示例1:输入:root=[10,5,-3,3,2,null,1......
  • 算法iITCGP的数值试验结果
    试验一:试验二: ......