算法复杂性分析

合集下载

计算机科学算法设计与复杂性分析

计算机科学算法设计与复杂性分析

计算机科学算法设计与复杂性分析计算机科学算法设计与复杂性分析是计算机科学领域的重要课题。

在计算机科学领域中,算法是解决问题的步骤和方法。

它的设计涉及到问题的建模和解决方案的设计与实现。

在实际应用中,算法的性能和复杂性是评估其优劣的关键因素。

本文将介绍计算机科学中算法设计的基本原则和复杂性分析的方法。

一、算法设计的基本原则在计算机科学中,算法设计的基本原则包括以下几个方面:1. 清晰和明确的问题描述:在设计算法之前,首先需要对问题进行清晰和明确的描述。

问题描述应包括问题的输入和输出,以及问题的约束条件。

2. 模块化和分解:复杂的问题可以通过将其分解为若干个较简单的子问题来进行解决。

模块化的设计思想有助于提高算法的复用性和可维护性。

3. 合适的数据结构选择:选择合适的数据结构对于算法的性能至关重要。

不同的数据结构适用于不同类型的问题,例如数组、链表、栈、队列等。

4. 适当的算法选择:在设计算法时,需要综合考虑算法的时间复杂性和空间复杂性。

有时候,一个简单但时间复杂性较高的算法可能比一个复杂但时间复杂性较低的算法更加合适。

二、复杂性分析的方法复杂性分析是用于评估算法性能的重要方法,常用的复杂性分析方法包括时间复杂性分析和空间复杂性分析。

1. 时间复杂性分析:时间复杂性是衡量算法在执行过程中所需时间的度量。

常用的时间复杂性分析方法有最坏情况分析、平均情况分析和最好情况分析。

最坏情况分析给出了算法在最坏情况下的执行时间上界,平均情况分析则考虑了各种输入情况的概率分布,最好情况分析给出了算法在最理想情况下的执行时间下界。

2. 空间复杂性分析:空间复杂性是衡量算法在执行过程中所需空间的度量。

与时间复杂性类似,空间复杂性也可以进行最坏情况分析、平均情况分析和最好情况分析。

通常情况下,空间复杂性主要考虑算法所需的额外空间。

三、算法设计与复杂性分析的应用举例为了更好地理解算法设计与复杂性分析的具体应用,下面将介绍两个与计算机科学相关的实际问题。

计算复杂性理论

计算复杂性理论

计算复杂性理论计算复杂性理论是计算机科学中重要的一个分支,它研究了计算问题的难度和可解性。

通过对问题的复杂性进行分析和分类,计算复杂性理论为我们提供了解决问题的指导原则和限制条件。

本文将介绍计算复杂性理论的基本概念、主要研究内容以及其在实际应用中的重要性。

一、基本概念1. P和NP问题在计算复杂性理论中,最基本的概念是P问题和NP问题。

P 问题是指可以在多项式时间内解决的问题,即存在一个算法可以在多项式时间内给出问题的正确答案。

而NP问题则是指可以在多项式时间内验证答案的问题,但尚未找到多项式时间内解决的算法。

P问题是NP问题的子集,即所有的P问题也是NP问题,但目前尚不清楚P问题和NP问题是否是相同的类。

2. NP完全性NP完全性是计算复杂性理论中的一个关键概念,它指的是一类最困难的NP问题。

一个问题被称为是NP完全的,如果它既是一个NP问题,又满足以下条件:对于任何一个NP问题,都可以用多项式时间的算法将其约化为该问题。

换句话说,如果我们能够找到一个多项式时间算法来解决一个NP完全问题,那么我们也可以用同样的算法来解决所有的NP问题。

3. NP难度除了NP完全性概念,计算复杂性理论还引入了NP难度的概念。

一个问题被称为是NP难度的,如果对于任何一个NP问题,都可以用多项式时间的算法将其约化为该问题。

虽然NP难度问题不一定是NP问题,但它们和NP完全问题一样,都是十分困难的问题。

二、主要研究内容1. 多项式时间算法计算复杂性理论的一个主要研究内容是寻找和分析多项式时间算法。

多项式时间算法是指可以在多项式时间内解决的算法,即其执行时间与输入规模呈多项式关系。

研究多项式时间算法的目标是寻找高效的解决方法,从而提高问题的可解性。

2. 算法复杂性分析算法复杂性分析是计算复杂性理论中的另一个重要内容。

通过对算法的复杂性进行全面的分析,我们可以预测算法在实际应用中的性能表现。

算法复杂性分析的主要方法包括时间复杂性分析和空间复杂性分析,通过对算法的时间和空间需求进行测量和评估,我们可以判断算法在给定条件下的可行性和效率。

算法分析与复杂性理论

算法分析与复杂性理论

stopvegas = 3
③回溯算法与lv算法 混合使用 1 先在棋盘的前若 2 干行中随机地放臵皇 3 后,(即设定 stopvegas的值)然 4 后在后继行中用回溯 5 法继续搜索,直至找 到一个解或宣告失败.6 随机放臵的皇后 7 越多,后继回溯搜索 所需的时间就越少, 8 但失败的概率就越大. 1
完全回溯法
LV和回溯混合效 率最高的情况
完全LV算法ห้องสมุดไป่ตู้
8
分析:
①完全回溯法比LV算法在解八皇后问题时效率 低得多; ②LV算法和回溯的混合使用有利于提高解八皇 后的效率。
9
LV算法具体应用分析
2、N皇后问题 下面是n取不同值时效率对比情况:
随着n值的增加,与回溯法相比,使用LV算法的 高效率性逐渐明显。
10
LV算法的现状与展望
缺点:时间复杂度不确定,有时候得不到解, 而要多次运行算法。 LV算法还可以来解决排序问题,分班问题, 考试系统安排问题,aD-Hoc网络中基于距离的动 态概率广播协议问题,航天器与短期空间碎云碰 撞问题等等。 如今,人们在实验中发现基于重启优化方法可 以提高LV算法的性能和稳定性,可以很直观的解 决一些NP难解问题,如TSP问题。
e
0.000000 0.000000 39.852940 15.784404 8.884438 7.165462 6.662811 6.315917 6.017177
t
113.000000 38.165001 28.320000 29.720001 38.134998 52.995003 45.480000 47.285000 48.285000
拉斯维加斯算法利用随机来指导解的搜索即使做了个不宜的选择也可以保证正确的解因为这样会导致算法进入绝境这样就会报告在这一次运行中无法得到解然后重新启动算法直到得到正确的结果

计算机算法的设计与分析

计算机算法的设计与分析

计算机算法的设计与分析计算机算法是计算机科学中非常重要的概念,它是解决问题和完成任务的步骤和规则。

在计算机科学领域,算法的设计与分析被广泛应用于各种领域,如数据结构、人工智能、图像处理等。

本文将重点探讨计算机算法的设计与分析,并介绍一些常见的算法。

一、算法的定义和特点算法是指解决问题的有限步骤序列,其中每个步骤具有明确的目标和执行顺序。

算法的设计与分析是通过选择和组合适当的数据结构和算法,以解决实际问题和优化计算性能。

合理设计的算法应具备以下特点:1. 正确性:算法能够解决问题,并给出正确的结果。

2. 可读性:算法的结构和步骤清晰易懂,容易被其他人理解和阅读。

3. 高效性:算法的执行时间和所需资源尽可能少,以提高计算效率。

4. 通用性:算法能够适用于不同规模和类型的问题,并具有良好的扩展性。

二、算法的设计方法在设计算法时,可以采用不同的方法和策略。

下面介绍几种常见的算法设计方法:1. 分治法:将大问题划分成若干个相同或类似的小问题,逐个解决小问题,最后将结果合并。

2. 动态规划:将复杂问题划分成一系列相互联系的子问题,通过解决子问题来求解原问题。

3. 贪心算法:每次选择当前看起来最优的策略来解决问题,不考虑后续可能产生的影响。

4. 回溯法:采用试错的思想,尝试所有可能的答案,当发现不满足条件时,进行回溯重新尝试。

5. 随机算法:通过随机选择的方式求解问题,时间复杂度通常较高。

三、算法的复杂性分析算法的复杂性分析是评估算法的执行时间和所需资源的一种方法。

一般来说,常用的复杂性分析有时间复杂性和空间复杂性。

1. 时间复杂性:衡量算法执行所需的时间。

常见的时间复杂性表示方法有大O记法,表示算法执行时间的上限。

2. 空间复杂性:衡量算法执行所需的额外内存空间。

常见的空间复杂性表示方法也是大O记法,表示算法所需额外内存空间的上限。

通过复杂性分析,可以选择适当的算法来解决特定问题,并评估算法的性能。

四、常见的算法以下是几种常见的计算机算法:1. 排序算法:包括冒泡排序、选择排序、插入排序、快速排序等,用于按照一定规则对数据进行排序。

算法的复杂性

算法的复杂性

算法的复杂性算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。

⼀个算法的复杂性的⾼低体现在运⾏该算法所需要的计算机资源的多少上⾯,所需的资源越多,我们就说该算法的复杂性越⾼;反之,所需的资源越低,则该算法的复杂性越低。

计算机的资源,最重要的是时间和空间(即存储器)资源。

因⽽,算法的复杂性有时间复杂性和空间复杂性之分。

不⾔⽽喻,对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法时追求的⼀个重要⽬标;另⼀⽅⾯,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选⽤算法适应遵循的⼀个重要准则。

因此,算法的复杂性分析对算法的设计或选⽤有着重要的指导意义和实⽤价值。

1.时间复杂性:如果⼀个问题的规模是n,解这⼀问题的某⼀算法所需要的时间为T(n),它是n的某⼀函数 T(n)称为这⼀算法的“时间复杂性”例1:设⼀程序段如下for (int i = 0; i < n; i++) // (i = 0) 1次 (i < n) n次 (i++) n次{for (int j = 0; j < n; j++) // (j = 0) n次 (j < n) n*n次 (j++) n*n次{x++; //(i++) n*n次}}可见,这段程序总的执⾏次数是:T(n)=1+3n+3n*n。

因为时间复杂度是不考虑系数的所以 T(n)=O(n^2)2.空间复杂性:包括程序代码所占⽤的空间,输⼊数据所占⽤的空间和辅助变量所占⽤的空间这三个⽅⾯。

⼀个算法的空间复杂度只考虑在运⾏过程中为局部变量分配的存储空间的⼤⼩只要不超过内存,尽可能⽤空间换时间。

计算机科学中的算法复杂性分析

计算机科学中的算法复杂性分析

计算机科学中的算法复杂性分析在当今数字化的时代,计算机科学的影响力日益显著,而算法作为计算机科学的核心之一,其复杂性分析更是至关重要。

当我们使用各种软件、应用程序或者进行大规模的数据处理时,背后都离不开算法的支持。

而了解算法的复杂性,能够帮助我们更好地评估其效率,从而做出更明智的选择。

那么,什么是算法的复杂性呢?简单来说,算法的复杂性就是衡量一个算法在执行过程中所需要的资源量,这些资源通常包括时间和空间。

时间复杂性关注的是算法运行所需的时间,而空间复杂性则关注的是算法在运行过程中所占用的内存空间。

为了更直观地理解算法的复杂性,让我们来看一个简单的例子:冒泡排序算法。

冒泡排序的基本思想是通过反复比较相邻的元素并交换它们的位置,将最大的元素逐步“浮”到数组的末尾。

对于一个包含 n个元素的数组,冒泡排序在最坏情况下的时间复杂度为 O(n^2)。

这意味着,如果数组的元素数量增加一倍,算法运行的时间将增加大约四倍。

与冒泡排序相比,快速排序算法通常在平均情况下具有更好的性能。

快速排序通过选择一个基准元素,将数组分为小于和大于基准元素的两部分,然后对这两部分分别进行排序。

在平均情况下,快速排序的时间复杂度为 O(n log n)。

这种对数级的增长速度使得快速排序在处理大规模数据时更加高效。

算法复杂性的分析不仅仅局限于排序算法,在图论、搜索算法、动态规划等众多领域都有着广泛的应用。

例如,在图的遍历中,深度优先搜索和广度优先搜索有着不同的时间和空间复杂性。

深度优先搜索通常具有较低的空间复杂度,但在某些情况下可能会导致较长的运行时间;而广度优先搜索则在处理某些问题时能够更快地找到解,但可能需要更多的空间来存储队列。

影响算法复杂性的因素有很多。

首先是问题的规模,通常来说,问题的规模越大,算法所需的时间和空间就越多。

其次是算法的设计和实现方式,一个巧妙的算法设计能够显著降低复杂性。

此外,硬件环境和编程语言的选择也可能对算法的实际性能产生影响。

第5章 算法与复杂性

第5章 算法与复杂性
对于一个算法的评价,通常要从正确性、可理解性、 健壮性、时间复杂度(Time Complexity)及空间复杂 度(Space Complexity)等多个方面加以衡量。 1.算法的时间复杂度 时间复杂度是度量时间的复杂性,即算法的时间效率 的指标。 2.算法的空间复杂度 算法的空间复杂度是度量空间的复杂性,即执行算法 的程序在计算机中运行时所占用空间的大小。
5.7 可计算性理论基础
研究计算的可行性和函数算法的理论,又称算法 理论,是算法设计与分析的基础,也是计算机科 学的理论基础。可计算性是函数的一个特性。
5.8 NP问题
NP(Non-deterministic Polynomial)问题是非确定性多 项式问题,是指算法无法直接计算出结果,只能通过进 行一些有选择的“猜算”来得到结果。 NP问题的研究结果有两种可能: 一种是找到了求解问题的算法; 另一种就是求解问题的算法是不存在的,那么就要从数
钥,通常有两个密钥,称为“公钥”和“私钥”,它 们两个必须配对使用,否则不能打开加密文件。
5.10 加密算法
常见加密算法有如下: (1)DES(Data Encryption Standard):数据加密标准,速 度较快,适用于加密大量数据的场合。 (2)3DES(Triple DES):是基于DES,对一块数据用3个不 同的密钥进行3次加密,强度更高; (3)RC2和RC4:用变长密钥对大量数据进行加密,比DES 快。 (4)IDEA(International Data Encryption Algorithm)国 际数据加密算法,使用128位密钥提供非常强的安全性。 (5)RSA:由RSA公司发明,是一个支持变长密钥的公共密 钥算法,需要加密的文件块的长度也是可变的。 (6)DSA(Digital Signature Algorithm):数字签名算法, 是一种标准的DSS(数字签名标准)。

算法时间复杂性分析综述

算法时间复杂性分析综述
1 概 念
算法 时 间复 杂性 分 析是 以原 操作 执行 频 度 厂 的阶 (re) 表示 时 间 复杂性 的 , 中 n是 问题 的规 () odr来 其

模 大 小 或者 理解 为算 法 所处 理 的数据 总量 。这 是一 种渐 近 (sm tt ) 示 , ay poi 表 c 数学 上用 0 n ) () 来表 示 。D
读做“ 欧 ” B g 0 。 大 ( i )
0 () 是上 界概 念 的一种 推广 , 示 存 在一 个 正 的常数 使得 由 0(() 表示 的数 对于 所 有 的 ) 表 厂n)
n 都满足 I In l对 0 ( ) 精确描述是, ( ) ≥ ≤ 厂 )。 in 的 ( f) 0 乃 是一类函数g ) 的集合, 该类函数满足存在
简 明易懂 ; 反 复调 用 的代码 , 讲 究 时效 ; 数据 量 大 , 对 要 若 则使 用 空间 时就 要精 打细 算 。 无论 是设 计 算法还 是选 择 算法 , 法分 析都 是 重要 的 。 法分 析一 方面 可 比较 几种 算法 的优 劣 , 算 算 另一 方面 可准 确地 确 定编码 的瓶 颈 。 算法 分 析包 括 时 间复杂 性分 析和 空 间复 杂性 分析 两 部分 。 时间 复杂度 通过 分 析算 法 的设计 , 包括 算法 中使 用 的 比较 、 赋值 等各 种 语句 的次 数来 评价 算 法性 能 。 这种 方 法独 立 于特 定 的计算机 系 统 , 它用算 法 处理和 数 据个 数 凡来衡 量 算法 的计 算 复杂度 。 间性 能分 析 的基本 概念 和 方法 与 时 间性 能分 析 是一样 空 的, 由于计算 机 内存 容量 的不断 扩大 , 间性 能分 析 的重 要性 不 断 降低 。本 文 只考 虑 时间复 杂性 分析 。 空
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

O(1)<O(logn)<O(n)< O(nlogn) <O(n2)<O(2n)<O(n!)
数据结构 —计算复杂性分析
本讲提纲
算法复杂性概念与定义
算法复杂性的渐进性态及大O表示法 算法复杂性分析方法
空间复杂性分析方法 时间复杂性分析方法
数据结构 —计算复杂性分析
空间复杂性分析方法
空间复杂性:问题实例所有参数所占据的存储空
【例:竞技淘汰算法记数】
输入:选手成员group[],选手个数n(n=2k) 输出:冠军的选手 1. Type game(Type group[],int n) 2. { 3. int j,i = n; 4. while (i>1) { 5. i = i / 2; 6. for (j=0;j<i;j++) 7. if (comp(group[j+i],group[j])) 8. group[j] = group[j+i]; 9. } 10. return group[0]; 11. }
数据结构 —计算复杂性分析
(2)迭代算法
int fib(n) { int i,f1=1,f2=1,f3; if(n==1||n==2) { printf ("1"); } else { for(i=0;i<n - 2;i++) { f3=f1+f2; //f1 f2 表示当前的值 f1=f2; f2=f3; } return f3 }
1. template <class Type>
第8行开始的内部for循环的循环体, 其执行次数依次为:
2. void shuffle(Type A[],int n) 3. { 4. int i,k,m,d; 5. random_seed(0); 6. for (k=1;k<=n;k++) { 7. m=n/k; 8. for (i=1;i<=m;i++) { 9. d = random(1,n); 10. swap(A[i],A[d]); 11. } 12. } 13. }
N N
Tmin ( N ) minT ( N , I ) min ti ei ( N , I ) ti ei ( N , I ) T ( N , I )
I DN I DN i 1 i 1
k
k
~
~
Tavg ( N )
I DN
P(I )T ( N , I ) P(I )t e (N , I )
数据结构 —计算复杂性分析
斐波那契数列问题
1 1
兔子数列
请大家设计一个算法,求解斐波那契数列第n项的值。
数据结构 —计算复杂性分析
(1)递归算法
int fib(n) { if(n == 1|| n== 2) { return 1; } else { return fib(n-1) + fib(n- 2); } }
i i I DN i 1
k
数据结构 —计算复杂性分析
本讲提纲
算法复杂性概念与定义
算法复杂性的阶及大O表示法 算法复杂性分析方法
数据结构 —计算复杂性分析
算法复杂性的渐近性态
算法复杂性的渐近性态:对于F(N),如果存在F’(N),使得 当N→∞时有:
(F(N )-F’(N )) / F(N ) → 0
计算机硬件环境影响算法的 评判。我们评的是算法,不 是计算机速度。就是不同计 算机上运行,同一个算法的 复杂度应该是一样的。一个 算法常常是针对一个问题来 设计的,但同一问题规模不 同时计算时间也不一样。
算法的本质特性 是 什 么?
数据结构 —计算复杂性分析量算法计算难度的一种尺度,反映了算法消耗的资源情况。 用N、I 来表示算法要解决问题的规模和算法的输入,用C表示 算法的复杂性,有:C =F(N,I)
O(?)
数据结构 —计算复杂性分析
时间复杂性分析方法
估算算法运行时间的方法
迭代计数:计算循环的迭代次数
操作计数:找出关键操作,确定 这些关键操作所需要的执行次数
数据结构 —计算复杂性分析
常用的级数公式及复杂度
数据结构 —计算复杂性分析
【例:多重循环算法记数】
x=1; for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x++;
数据结构
第二讲 计算复杂性
2.2 算法复杂性分析
清华大学 自动化系 黄双喜 博士
huangsx@
数据结构 —计算复杂性分析
How many Algorithms we have?
排序算法
• 冒泡排序、插入排序、桶排序、计数排序、 归并排序、基数排序、希尔排序、堆排序、 快速排序
if(n==1||n==2) { printf ("1"); } else { for(i=0;i<n - 2;i++) { f3=f1+f2; //f1 f2 表示当前的值 f1=f2; f2=f3; } 迭代次数: n-2次 return f3 }
递归次数:2Fib(n)-1 (为什么?)
F (100) 354224848179261915075
13 15 18
n!
6.2*109 1.3*1012 6.4*1015
运算时间
约1秒 约325秒 约23天
20
2.4 1018
约190年
*兴趣阅读:克雷数学研究所的世界七大数学难题(P=NP?)
数据结构 —计算复杂性分析
如何评价算法好与坏?
能否直接在计算机上运行 算法,通过记录运算时间 来评判算法好坏呢?
百钱百鸡问题
中国古代数学家张丘建在他的《算经》中提出 了他的著名的“百钱百鸡问题”:鸡翁一,值 钱五;鸡母一,值钱三;鸡雏三,值钱一;百 钱买百鸡,翁、母、雏各几何?
算法一
算法二
数据结构 —计算复杂性分析
计算机能解决算法问题吗?
• 问题:一个商人欲到n个城市推销商品, 每两个城市i和j之间的距离为dij,如何选 择一条道路使得商人每个城市走一遍后 回到起点且所走路径最短(每个城市只 经过一次)? • 枚举算法:n个城市的一个排列表示商人 按这个排列顺序推销并返回起点。
? 怎么设计出来的? ? ? 给你一个新问题,能设计出算法吗? ? 怎么去设计一个算法呢? ? 怎么去设计一个优秀的算法呢?
怎么想到的?
算法 分析 与设 计能 力
数据结构 —计算复杂性分析
本讲提纲
算法复杂性概念与定义 算法复杂性的阶及大O表示法 算法复杂性分析方法
算法有好坏之 份吗?如何理 解算法之美?
旅行商问题 (TSP)
数据结构 —计算复杂性分析
旅行商问题(TSP)
• 固定一个城市为起终点,则需要(n-1)!次枚举。若用一台每秒可运 算40亿次(40*108)的计算机来计算,完成15个城市枚举需要325 秒,18个城市就已经变成23天,计算20个城市的时间我们已经不能 忍耐:190年!!!
N
n n n n T ( n ) j 2 4 n j 1 2
n( 1 1 1 k ) 2 4 2
1 2
k
k
n (1
)
n 1
O(n)
分析comp(group[j+i],group[j])的运行次数
数据结构 —计算复杂性分析
【例:随机洗牌算法】
输入:牌A[],牌的张数n 输出:洗牌后的牌A[]
搜索算法 图算法
其他
• 顺序查找、折半查找、二叉树查找、 索引查找、散列查找 • 广度/深度优先算法、最小生成树算法、 最短路径算法、最大流算法 • 矩阵运算、方程求解、优化算法、-------
数据结构 —计算复杂性分析
How much do you know about algorithms
算法 复杂 性理 论
我们说F’(N)是F(N)当N→∞时的渐近性态
例:F(N)=3N2+4Nlog2N +7,求F’(N)
F’(N)的一个答案是3N2,因为这时有:
(F(N )-F’(N )) / F(N )
数据结构 —计算复杂性分析
时间复杂性渐进表示法
定义1:如果存在两个正常数c和n0,对于所有的n≥n0,有:f(n)≤cg(n), 则记作:f(n) = Ο(g(n)) 定义2:如果存在两个正常数c和n0,对于所有的n≥n0,f(n) ≥cg(n),则记作: f(n) = Ω(g(n))
间之和。
在二进制编码条件下,任意正整数x占用位数为:
考虑一个符号位和一个数据分隔位,任何一个整数x的 输入规模为:
数据结构 —计算复杂性分析
【例】TSP实例规模的计算
对于TSP问题,它的任何一个实例由城市数n和城市间的
距离D确定。
TSP的任何一个实例I的规模(考虑符号和数据分隔位) 为:
定义3:如果存在正常数c1,c2和n0,对于所有的n≥n0,有c1g(n)≤ f(n) ≤
c2g(n),则记作: f(n) = (g(n))
数据结构 —计算复杂性分析
常见的算法复杂度的大O阶
O(1): 表示算法的运行时间为常量
O(logn): 二分搜索算法 O(n): 表示该算法是线性算法 O(nlogn): 快速排序算法 O(n2): 对数组进行排序的简单算法, 如直接插入排序算法。 O(n3): 做两个n阶矩阵的乘法运算 O(2n): 求具有n个元素集合的所有子集 的算法 O(n!): 求具有N个元素的全排列的算法
相关文档
最新文档