A. 算法复杂度中的O(n)、O(nlgn)、O(n^2)等是什么意思
关于算法的复杂度计算,初学者一开始便容易进入完全定量的思考之中,这是难以到达的。算法复杂度在很多时候是对算法运行的时间一个大概的定性(或者说大数)描述,因为很多时候无法精确地描述一条代码究竟执行了多少时间。而任何一个算法运行的大多时间都集中在某一主体循环之中,像for,while之类,主体循环的次数往往跟某个或多个输入参数或环境变量有关。像O(n)、O(nlgn)、O(n^2)之类描述都是围绕主体循环次数和输入参数或者环境变量的关系展开的。
下面举一个例子,从给定的整型数组中查找与某一数相等的数的位置,显然对于没有排序的数组而言,需要从数组头部开始向后遍历比较,那么这个主体遍历循环就跟数组的长度有关,即算法复杂度为O(n)。
B. 算法时间复杂度o(1)和o(2)的区别
O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。
时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法。所以O(2)相比于O(1)数据量会更多,同时需要执行的时间会更多。
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),存在一个正常数c使得fn*c>=T(n)恒成立。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
时间复杂度O(n^2),就代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更高的时间复杂度。比如冒泡排序,就是典型的O(n^2)的算法,对n个数排序,需要扫描n×n次。
比如O(logn),当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。
O(nlogn)同理,就是n乘以logn,当数据增大256倍时,耗时增大256*8=2048倍。这个复杂度高于线性低于平方。归并排序就是O(nlogn)的时间复杂度。
C. C语言中的算法里,时间复杂度可以记为O(N平方)。字母O 表示什么
计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。
代表“order of ...”(……阶)的大 O,最初是一个大写的希腊字母希腊字母'Ο'(Omicron),现今用的是大写拉丁字母‘O’。
D. 算法分析中O(n)什么含义
O(n) 表示运行时间的上界 通俗点说就是算法运行的最坏情况该程序有三重循环 由c[i][j]=c[i][j]+a[i][k]*b[k][j];可知进行一次乘法必进行一次加法 故T(n)<=n^3+n^3=2n^3=cn^3故T(n)=O(g(n))=O(n^3)
E. 算法中描述复杂度的大O是什么意思
在“计算机算法复杂性分析”课程中,通常使用大 O 符号表述时间复杂度。常见的有:(1)、O(n²):表示当 n 呈线性增长时,计算量按 n² 规律增大。该种算法是效率最低的一种。
(2)、再例如:要在一个大小为 n 的整数数组中,找到一个该数组里面的最大的一个整数,因此你需要把 n 个整数都扫描一遍,操作次数为 n,那么该时间复杂度就是O(n)。
F. 算法 o(1)什么意思
是常数阶时间复杂度。
一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))按数量级递增排列
常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
(6)算法中o扩展阅读:
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。
G. 算法复杂度中的O底数是多少
如果没有特别说明,像logn这样的,一般底数是10,这个是毋庸置疑的。但我所了解的严蔚敏老师的《数据结构》里,一般对数都是有底数的,像这种求复杂度的一般底数是2的比较多,像这样logn的一般是不会在《数据结构》中出现,在数学方面会出现的比较多,是以10为底的。如果出现的话,觉得还是以10为底的(除书中特别声明)。
H. 数学分析中的O和算法中的O是一回事吗我
按定义来讲是一回事, 是统一的记号, 只不过算法分析里的O大多数时候仅用于n->oo时的无穷大量(当然, O(1)不是无穷大量, 只是有界量), 而数学分析里则还经常会用于无穷小量
I. 数学分析中的O和算法中的O 是一回事吗 我没分了,
你说的算法中的O是指时间的复杂度吧,不能完全看作一回事,数分中有极限的过程,而在算法中表示一种阶数,算法中的O(n),表示与n有相同的阶数,在n前面可以加上任意一个确定的倍数,比如3n,5n,100n,都可以看成O(n),这是我自己的看法,仅供参考哈