#C数据结构与算法# 绪论 算法与大O时间复杂度表示法(附例题)

article/2025/5/20 5:40:35

一  算法基本概念与特性。

1.解决问题的五个步骤

  由此我们可以看出良好的解决问题离就不开算法。

2.什么是算法

      算法是指在解决问题时,按照某种机械的步骤一定可以得到问题的结果(有的问题有解,有的没有)的处理过程。算法是对解决这个问题的方法和步骤的描述。

    算法的组成要素:
         操作、控制结构、数据结构3要素组成。

3.算法基本性质

   基本性质:1 输入性  2 输出性  3有限性  4 确定性  5 可行性  

   输入性:一个算法可以没有输入,也可以有多个输入                                                                         输出性:是一组与输入有确定关系的量值。一个算法至少有一个输出,也可以有多个。                   确定性:组成算法的每条指令清晰无歧义                                                                                           有限性:算法中每条指令的执行次数和执行时间有限。                                                                     可行性:算法中的操作都可通过已经实现的基本操作运算有限次地实现。

二 算法复杂度分析

1  好的算法应该具备的特性

    正确性: 要求算法能正确求解问题,是首要和最基本的特性。

    可读性:是对算法描述的思路和层次的评价。好的算法应思路清晰,层次分明易于阅读和修改。

    健壮性:健壮性是对算法在异常情况下处理能力的评价。好的算法在出现异常或非法数据时,或在操作不当时,算法都能作适当处理。

    高效性:算法的效率是对求解同样问题的不同算法所占用的时间或空间的评价。好的算法应该是高效的,即求解问题所占空间少,执行时间短。

 2 大O表示法

     2.1 算法的时间复杂度概念:

           是一个用于度量一个算法的运算时间的一个描述,本质是一个函数,根据这个函数能在不用具体的测试数据来测试的情况下,粗略地估计算法的执行效率,换句话讲时间复杂度表示的只是代码执行时间随数据规模增长的变化趋势。

     2.2时间复杂度表示法:

      下面代码的语句执行次数  T(n)=n^2 +n+3 ,当n趋于无穷时n+3对于T(n)的影响远远小于n^2,n+3对于趋势的影响几乎可以忽略,通常用大O表示法描述其时间复杂度为O(n^2)

int main(){ int i=0,j=0,sum=0;int n;scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<=n;j++){sum++;  }}
}

精确表示一个算法的时间复杂度是困难的,一般用大O表示法表示算法的时间复杂度。

大O表示法可以理解为表示  T(n)的增长的量级。
 例如

   T(n)=4n^3+5n^2+3   则 T=O(n^3), 时间复杂度是O(n^3)

   T(n)=2^n+n^3+6       则T=O(2^n)  ,时间复杂度是O(2^n) 

一般的:

              

三 例题

1

 

D      3^t=n,则 t=log3(n)   则 O(log3n)

2

void test2(int n)
{int i=0,s=0;while(s<n){++i;s=s+i;}
}

分析:

     n为规模,while循环处当s>=n不符合条件停止,假设执行m次结束,i=1,2,3..依次渐加,i只影响s值。主要看s,s1 =1, s2 =1+2=3,... sm.=m(m+1)/2,当m(m+1)/2+k=n(k一个起修正作用的常数),m≈ √n ,则时间复杂度为O(√n )。

3

int test3(int n)
{if(n<=1)return 1;  // 1elsereturn n*test3(n-1);  // 2
}

 递归函数中,1的时间复杂度显然O(1)。主要分析else后的语句2,递归调用test3(n-1)的时间为T(n-1),则2时间开销就是O(1)+T(n-1) 。

假设求1!就是O(1)+T(n-1)=1×O(1)+T(n-1) ,2!就是O(1)+O(1)+T(n-2)=2×O(1)+T(n-2)... ,n!=(n-1)×O(1)+T(n-(n-1)) =(n-1)×O(1)+T(1) = n×O(1)=O(n) ,所以时间复杂度为O(n)



 


http://chatgpt.dhexx.cn/article/FNBh3RvB.shtml

相关文章

云计算期末速成大法

笔记仅自用&#xff0c;杠勿cue我 1. 绪论 4V特征&#xff1a;Volume&#xff08;规模大&#xff09;&#xff0c;Variety&#xff08;种类杂&#xff09;&#xff0c;Velocity&#xff08;变化快&#xff09;&#xff0c;Value&#xff08;价值密度小&#xff09; 从抽样到全…

简单分析几十个游戏案例

文章目录 一、 介绍二、 影响游戏体验的要点三、 游戏爆火的秘诀1.解读5个关键因素2.把握玩游戏的两种经典心理3.分析几款爆款游戏Qq农场植物大战僵尸水果忍者召唤神龙羊了个羊 4.值得游戏公司学习的经验5.未来游戏面对的诸多挑战 四、 几十款游戏的多方面分析FC红白游戏机十二…

软考高级-系统分析师-案例分析-系统设计

系分-案例分析-系统设计 结构化设计SD内聚&#xff08;高内聚低耦合&#xff09;耦合 业务流程建模IDEF&#xff08;建模仿真&#xff09; 面向对象的设计OOD设计原则设计模式分类 人机界面设计架构设计Zachman 架构框架Zachman 架构框架&#xff08;案例&#xff09; 面向服务…

系统分析师【系统规划案例分析汇总】

系统规划 项目选择和确定 &#xff08;1&#xff09;选择有核心价值的项目 &#xff08;2&#xff09;评估所选择的项目 &#xff08;3&#xff09;项目优先级排序 &#xff08;4&#xff09;评估项目的多种实施方式 &#xff08;5&#xff09;平衡地选择合适的方案 可行…

数据分析师常用的商业模型

数据分析少不了商业分析思维&#xff0c;以及对业务的理解。很多时候觉得思维不够健全&#xff0c;或者分析没有思路&#xff0c;其实都可以借助思维模型的学习来不足&#xff0c;来加速分析的成功。 一、波特五种竞争力模型 波特五力模型是企业制定竞争战略时常用的战略分析…

障碍度如何分析?

通常在综合评价后&#xff0c;比如计算得到准则层和指标层的分别权重之后&#xff08;指标权重体系构建后&#xff09;&#xff0c;为了找到‘主要障碍因子’&#xff0c;此时可使用‘障碍度模型’&#xff08;obstacle degree&#xff09;进一步研究&#xff0c;以便进行障碍度…

大数据分析师技能图谱详解

全球的数据量正在以每18个月翻一倍的惊人速度增长,世界正在高速数字化,大数据堪比石油,如何掘金大数据是所有个人、企业和国家的机遇和挑战。中国是人才大国,能理解和应用大数据的创新人才更是稀缺资源。大数据分析应用已经渗透到我们生活的方方面面。 随着大数据在国内的…

大数据分析案例-基于决策树算法构建银行客户流失预测模型

🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章 大数据分析案例合集…

系分 - 案例分析 - 需求分析

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 系分 - 案例分析 - 需求分析结构化分析SA数据流图DFD答题技巧典型例题 1题目描述参考答案 典型例题 2题目描述参考答案 面向对象的分析OOA用例图用例模型细化用例描述用例关系【包含、扩展、泛化】分析模…

大数据分析案例-基于RFM+KMeas算法探究客户价值分析

🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目准备 2.1 项目内容 2.2 数据说明

3-如何进行市场规模的分析预测-1

在进行行业分析时&#xff0c;经常需要根据历史的市场数据来预测未来的规模&#xff0c;一方面是帮助企业在做战略规划的时候&#xff0c;给他们提供一个指引&#xff0c;另一方面在做行业调查的时候也常会预测未来的市场规模&#xff0c;来判断行业的发展前景。 01 市场规模预…

第四段第一天_数学模型之层次分析法

层次分析法 [ 定义] [ 步骤] [ 优点介绍] [ 缺点介绍] [程序 ] 1&#xff1a;定义 所谓层次分析法&#xff0c;是指将一个复杂的多目标决策问题作为一个系统&#xff0c;将目标分解为多个目标或准则&#xff0c;进而分解为多指标&#xff08;或准则、约束&#xff09;的若…

鱼骨图分析法实际案例_技术前沿 | 基于鱼骨图分析标准实施偏差成因的应用研究...

引言 标准在实施过程中,难免会因为各种主客观原因导致难以落地的情况,分析标准执行偏差,开展问题成因分析,从而有针对性地制定一套有效的问题整改措施和预防措施,是一件很有价值、很有意义的创造性工作。基于鱼骨图开展根因研究,将能够对产生问题的所有直接原因和根本…

层次分析法在高校教学评价体系中的应用(原理+实例+工具)

1 层次分析法的原理及步骤 1.1 层次分析法的原理 20世纪70年代末&#xff0c;美国运筹学家、匹兹堡大学教授T.L.萨迪&#xff08;T.L.Saaty&#xff09;提出了层次分析法&#xff08;Analysis Hierarchy Process,简称 AHP&#xff09;。它将人的思维过程分成目标层、准则层和…

数学建模整理-层次分析法

目录 基本原理步骤&#xff08;1&#xff09;建立递阶层次结构模型&#xff08;2&#xff09;构造出各层次中的所有判断矩阵&#xff08;3&#xff09;计算权重&#xff08;3&#xff09;层次单排序及一致性检验&#xff08;4&#xff09;层次总排序及一致性检验 基本原理 层次…

层次分析法原理及实例(AHP)

层次分析法&#xff08;AHP&#xff09; 一、层次分析法概述 层次分析法&#xff08;analytic hierarchy process&#xff09;&#xff0c;简称AHP&#xff0c;是指将与决策总是有关的元素分解成目标、准则、方案等层次&#xff0c;在此基础之上进行定性和定量分析的决策方法…

JavaWeb自我学习——Tomcat简介&基本使用

目录 一.Tomcat简介 JavaEE Tomcat各类文件夹&#xff1a; 控制台中文乱码解决方法&#xff1a; 配置: 二.启动关闭 启动时出现问题&#xff1a; 三.Tomcat部署项目: 四.IDEA中创建Maven Web项目 1.Web 项目结构&#xff1a; 2.创建 第一种&#xff1a;项目骨架 第…

tomcat简介部署

tomcat 文章目录 1.tomcat简介2.tomcat历史3.tomcat官网4.部署tomcat5.登录到Host Manager,Manager App,Server Status 1.tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的…

Apache Tomcat简介

Apache Tomcat是一个长期存在的开源Java Servlet容器&#xff0c;它实现了几个核心Java企业规范&#xff0c;即Java Servlet&#xff0c;JavaServer Pages(JSP)和WebSockets API。 Tomcat是一个Apache Software Foundation项目&#xff0c;它于1998年首次发布&#xff0c;距Ja…

Tomcat简介 安装 配置 示例

Tomcat简介 & 安装 & 配置 & 示例 1、Tomcat简介2、Tomcat安装1&#xff09;RPM包安装2&#xff09;二进制安装 3、配置1&#xff09;server.xml组件类别2&#xff09;server.xml组件介绍①Connector主要参数说明②host参数详解③Context参数说明 4、示例&#xff…