同一个问题可以用不同的算法实现,而不同的算法也有不同的执行效率,甚至可以影响整个软件的执行效率。算法分析的目的在于选择合适的算法和改进算法。
对于一个算法的评价主要从时间复杂度和空间复杂度来考虑。
1.时间复杂度
在将时间复杂度之前,首先要知道一个名字,时间频度(语句频度)--意思就是一个算法中语句的重复执行次数。一个算法的实际实行时间我们只有在计算机上运行才能测出,但是我们只需要知道两个算法哪个优劣的话,我们就没有必要算出每个算法的精确执行时间,一个算法花费的时间跟这个算法的语句执行次数成正比。
再则,我们进一步考虑,一算法中程序基本语句的重复执行次数是问题规模n的的某个函数,用T(n)表示,我们往往想知道一个算法执行时间的变化规律,这样的话我们就引入了时间复杂度。若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。
按数量级递增排列,常见的时间复杂度有:
常数阶O(1),对数阶O(log2n),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),...,
k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
2、空间复杂度
与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作:
S(n)=O(f(n))
我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。
分享到:
相关推荐
在数据结构和算法领域中,存在大量不同的概念和术语,这些都构成了计算机科学的基础。思维导图是一种有效的方式来组织和回顾这些概念,通过可视化方式帮助记忆和理解。从提供的文件【标题】:"数据结构和算法-思维...
这个压缩包文件"算法-数据结构和算法-1-算法的引入和算法时间复杂度.rar"主要探讨了这两个概念的入门知识,特别是关注算法的时间复杂度分析。 首先,我们需要理解什么是算法。算法是一系列明确的步骤或指令,用于...
这份资料的核心内容围绕着算法这一核心概念展开,通过深入浅出的方式讲解了算法的概念、重要性以及在计算机科学中的应用。 在计算机科学中,算法是解决问题或执行任务的精确步骤序列。它们是编程的基础,能够提高...
图论及其算法-基本概念.ppt
这个“数据结构与算法-----PPT版本”很可能包含了徐旭松教授或专家精心制作的一系列教学材料,旨在帮助学习者深入理解这些核心概念。 数据结构是关于如何在计算机中组织和存储数据的方式,它直接影响到程序的效率和...
### 一、基础算法概念 #### 1.1 编程的灵魂:数据结构与算法 - **数据结构**:是计算机科学中用于组织和存储数据的方式,常见的数据结构包括数组、链表、树、图等。 - **算法**:是对特定问题求解步骤的一种描述,...
第3章 数据仓库的概念与结构(共52页).ppt 第3章 数据仓库设计与开发(共100页).ppt 第4章 数据挖掘(共81页).ppt 第5章 数据预处理技术(共114页).ppt 第5章 数据预处理技术案例(共18页).ppt 第6章 OLAP 联机...
本书不仅介绍了数据结构与算法的基本概念,还着重强调了面向对象编程范式(Object-Oriented Programming, OOP)在实际中的应用,特别是其在C++语言中的实现。 从给出的内容来看,本书至少包含了如下几个重要的知识...
知识点涵盖了从基础的数据结构(如数组、链表、栈、队列)到更高级的概念(如设计模式、算法的渐近分析),还包括了如何将这些理论应用到实际编程实践中。通过本文件提供的内容,读者可以深入了解数据结构与算法的...
本书全面介绍了算法的基本概念、设计方法以及常见数据结构的应用技巧,对初学者及专业人士都有着重要的指导意义。 #### 内容概览 本书按照不同的主题分为五个主要部分,每个部分都深入浅出地讲解了相关的理论知识和...
- **特点**: 本书不仅包含了算法的基本概念,还提供了大量的实际例子和实现细节。 - **适用人群**: 对于希望深入了解算法实现的同学非常有用。 - **内容覆盖**: - 基础算法 - 图算法 - 字符串处理 - 几何算法 -...
从实用的视角,以独特的结构将有关内容组织在一起,从而使读者不仅可以对这一领域有系统性的认识,而且还可在实践中灵活使用所提供的算法工具。本版中,增加了数以千计的新练习、数百年新图表以及数十个新程序,而且...
- **简介**:本部分重点介绍了排序算法和相关数据结构。 - **第六章:堆排序** - **6.1 堆的定义**:阐述了堆的性质及其在堆排序中的作用。 - **6.2 维护堆属性**:描述了如何保持堆的数据结构满足其基本性质。 ...
每一章都围绕一个算法、一种设计技术、一个应用领域或相关主题展开。算法被用英文和伪代码形式描述,这种伪代码旨在让任何具备基本编程经验的人都能理解。此外,书中包含超过230幅插图,帮助读者更好地理解算法的...
论文分析了ARX算法的积分零相关区分器,特别是在SHACAL-2算法上的应用,展示了一种新的密钥恢复攻击方法。最后,针对LBlock算法,文章进行了相关密钥不可能差分分析,揭示了LBlock在16轮和23轮时的潜在脆弱性。 总...
《大数据-算法-Hom李双代数胚.pdf》这篇文档主要探讨了Hom李双代数胚及其相关理论,这是在大数据分析和算法设计领域中的一种高级数学工具。Hom李双代数胚是数学中用于研究非平凡变形和结构理论的重要概念,尤其在...
- **定义2.1**(证书):定义了一个证书的概念,其中包括了正整数n、d、e以及整数c1、c2等参数的组合。这些参数共同构成了一个能够在多项式时间内判断n是否为素数的有效证据。 - **算法实现**:通过对这些参数的特定...
大数据-算法-线性负虚系统概念的推广及其性质研究刘梅.pdf 大数据和算法是当今时代的热门话题,而线性负...本文对大数据和算法领域内的线性负虚系统概念的推广及其性质研究做出了重要贡献,为以后相关研究奠定了基础。
相关概念 * 字符串搜索算法:bm算法是一种字符串搜索算法,用于在文本串中查找模式串。 * Boyer-Moore算法:bm算法是Boyer-Moore算法的简称,Boyer-Moore算法是一种高效的字符串搜索算法。 bm算法的C语言实现 bm...