O(log(2)n)和O(1)的时间复杂度哪个好,哪个坏?为

2021-01-05 12:04:38 字数 4599 阅读 3984

1楼:匿名用户

肯定是第一个的时间复杂度低,把两种函数的曲线画出来就清楚了

为什么该循环的时间复杂度为o(log{2}n):int i = 1; while(i <= n) i = i * 2;

2楼:匿名用户

因为从判断语句上看i从1循环到n,但是循环体中每次循环i都乘以2,所以实际上循环体只执行了log2n次(这是个简单的数**算吧!),而判断时间复杂度一般都是看循环体的实际有效执行语句的次数,所以该循环的时间复杂度是o(log2n)。

c++中的时间复杂度o(1)与o(n)有什么区别

3楼:杜xiao若

c++中的bai时间复杂度o(du1)与o(n)的主要区别在于:zhi

1、时间复杂度o(1)是常数阶

dao,其基本

内操作重复执行的次数是一个固定的容常数,执行次数不存在变化;

2、而时间复杂度o(n)是线性阶,其基本操作重复执行的次数是与模块n成线性相关的,其值会随着模块n的变化而变化,当模块n的规模确定为定值后,其时间复杂度转化为o(1)。

扩展资料1.时间复杂度的计算方法:

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用t(n)表示,若有某个辅助函数f(n),使得t(n)/f(n)的极限值(当n趋近于无穷大时)为不等于零的常数,则称f(n)是t(n)的同数量级函数。记作t(n)=o(f(n)),称o(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

4楼:幻梦·人生

时间复杂度是

来一个函源数,它定量描述了该bai算法的运行时间。常du

见的zhi时间复杂度有以下几种。

1,daolog(2)n,n,n log(2)n ,n的平方,n的三次方,2的n次方,n!

1指的是常数。即,无论算法的输入n是多大,都不会影响到算法的运行时间。这种是最优的算法。而n!(阶乘)是非常差的算法。当n变大时,算法所需的时间是不可接受的。

用通俗的话来描述,我们假设n=1所需的时间为1秒。那么当n = 10,000时。

o(1)的算法需要1秒执行完毕。

o(n)的算法需要10,000秒 ≈ 2.7小时 执行完毕。

o(n2)的算法需要100,000,000秒 ≈ 3.17年 执行完毕。

o(n!)的算法需要******xx(系统的计算器已经算不出来了)。

可见算法的时间复杂度影响有多大。

所以o(1)和o(n)差了2.7小时,区别显而易见。

5楼:匿名用户

你理解错了,bai

我举个du例子:

你设计了一个字符串zhi类:客

dao户有时需要知道字符串的专长度,

所以有两种属设计getlength()函数的方法1。每次客户询问长度,你都用循环检测串长,即for(i=0;str[i]!=0;++i)这样效率低 时间复杂度o(n)

2 每次串内容改变时才算长度,算好后存起来,以后客户需要知道字符串的长度就直接把变量值返回这样效率高 时间复杂度o(1)

6楼:匿名用户

o(1)复杂度是与输入数据copy

无关,baio(n)是与输入数据成正比。

对于du程序zhia,for(int i=0;i<1000;i++),当输入任意的n时循环次数dao均为1000,复杂度为o(1);

对于程序b,for(int i=0;i

设序列长度为n,在最坏的情况下,时间复杂度为o(log2n)的算法是什么

7楼:匿名用户

二分法二分法的基本思想如下:

假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。

由于是数组是预先排序好的,所以可以采用折半查询的方式,每次抛掉待查询部分的一半

这样,长度为n的数组,只需要log2n次查询即可,2是对数的底。

例如,长度为7的数组,最多只需要3次就可以找到o(log2n)只是表示是log2n同一数量级,因为有个取整的问题,而且也有可能在查询过程中就已经找到(也就是某个折半查询点正好是待查询数据),这样o(log2n)就是一个上限

时间复杂度o(n)和o(n log n)哪个快

8楼:匿名用户

0(n)比0(n*log(2,n))快。不要去讨论n的值,多个时间复杂度比较,n都是取很大的值,这个时候就与输入规模无关了。对单个的时间复杂度讨论的时候,才会去考虑n的输入规模。

9楼:木野轻风

当n<=2时,两者相等;

当n>3时,log n>1,所以n log n>n*1,即n log n>n;

当n变得很大时,o(n log n)比o(n)会大很多

10楼:匿名用户

看n的大写,如何logn的结果是小于等于1的。后者快。不然前者快

算法时间复杂度o(1)和o(2)的区别???

11楼:a罗网天下

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)的时间复杂度。

12楼:天寂无痕

根据大o定义易知,o(1) = o(2)。用o(1)和o(2)表示同一个函数时,差别仅在于常数因子c而已。

两个都是时间复杂度为常量。复杂度是用来表达算法的复杂程度跟算法输入的规模n的关系。如果不管n是多大,算法的复杂程度都固定是1或者2(比如1条指令,2个循环),那么在“复杂度”这个概念上,两者都一样,叫做“常数阶”复杂度。

o(g(n)) = ,则g(n)是f(n)的渐进上界。o(g(n))是指所有与g(n)具有相同增长率或比其增长率小的函数的集合。

13楼:兄弟连教育

时间复杂度是一个函数,它定量描述了该算法的运行时间。常见的时间复杂度有以下几种。

1,log(2)n,n,n log(2)n ,n的平方,n的三次方,2的n次方,n!

1指的是常数。即,无论算法的输入n是多大,都不会影响到算法的运行时间。这种是最优的算法。而n!(阶乘)是非常差的算法。当n变大时,算法所需的时间是不可接受的。

用通俗的话来描述,我们假设n=1所需的时间为1秒。那么当n = 10,000时。

o(1)的算法需要1秒执行完毕。

o(n)的算法需要10,000秒 ≈ 2.7小时 执行完毕。

o(n2)的算法需要100,000,000秒 ≈ 3.17年 执行完毕。

o(n!)的算法需要******xx(系统的计算器已经算不出来了)。

可见算法的时间复杂度影响有多大。

所以o(1)和o(n)差了2.7小时,区别显而易见。

14楼:茧与剑

o(1)与o(2)的阶位一样,所以仅仅是常数区别

15楼:寻秦记记

没有o(2)这一说,要么是o(1),要么是o(f(n))

二分法查找最坏情况下需要比较次数,为什么n次和o(log(2)n)都对呢?后者是什么意思

16楼:匿名用户

后者是算法复杂度的意思

n次是正确的吗?应该是log(2)n次才对啊

17楼:匿名用户

用二分法查找最多log2^n

用顺序查找最多是n次

18楼:野马皇上

顺序查找需要比较n次,二分法查找需要比较logn次

下列时间复杂度中最坏的是______. a.o(1) b.o(n) c.o(log2n) d.o(n2)

19楼:

答案选d,平方级大o的算法的效率是最慢的。最好的常数阶大o。

20楼:匿名用户

最坏的是d.o(n2)

列举时间复杂度为O(n)和O(n2)的算法

1楼 影墨者 o n for i 0 i 100 i o n 2 for i 0 i 100 i for j 0 j 100 j 算法时间复杂度o 1 和o 2 的区别??? 2楼 a罗网天下 o后面的括号中有一个函数,指明某个算法的耗时 耗空间与数据增长量之间的关系。其中的n代表输入数据的量。 时...

如何对n个数进行排序,要求时间复杂度o,空间复杂度o

1楼 mean有方法的 o什么,要知道,排序理论最快时间复杂度只能是nlogn,不能再快,这是有证明的。想要提高速度用c 函数库的qsort 如何对n个数进行排序,要求时间复杂度o,空间复杂度o 2楼 钟萌纳 题目 如何对n个不重复出现的整数序列进行排序 已知这些数的范围为 0 65535 要求时间...

如何对n个数进行排序,要求时间复杂度O,空间复杂度O

1楼 钟萌纳 题目 如何对n个不重复出现的整数序列进行排序 已知这些数的范围为 0 65535 要求时间复杂度o n 空间复杂度o 1 分析 可以申请一个大小为65536的数组a 数组的x下标代表数字x a x 代表x 在整数序列中出现的次数 扫描一遍整数序列就可以完成对该整数序列的排序 时间复杂度...