| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:新手0起步``问个问题``
只看楼主 加入收藏
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
结帖率:66.67%
收藏
 问题点数:0 回复次数:1 
新手0起步``问个问题``
`请问下``什么是Big-OH```

在书上突然看到的```很郁闷``不知道它是个什么东西``

2007-07-11 13:01
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

常见的Big-oh

  对于比较2个不同的时间复杂度,千万不可以用直观的方法来判断。例如有2种算法,时间复杂度各为O(n)与O(n2)。如果这2种方法的实际执行次数T'(n)=2n,T"(n)=n2,则n>2时,2n<n2,对时间复杂度而言,O(n)优于O(n2)(所谓"优于",就是所花的时间较少)。注意!当n≦2时2n≧n2,则O(n2)优于O(n)。由上面的说明,我们可以清楚知道时间复杂度事实上只表示实际次数的一个量度的层级,并不是真实的执行次数。此外,有关目前常见的Big-oh有下列几种情形:
1.O(1)或O(c):称为常数时间(constant time)
  这表示算法则的执行时间是一个常数倍,而忽略数据集合大小的变化。一个例子是在计算机中它存取RAM所花的时间,在内存中去读取及写入所用的时间是相同的,而不考虑整个内存的数量。如果有这样的算法则存在,则我们可以在任何大小的数据集合中自由的使用,而不需要担心时间或运算的次数会一直成长或变得很高。
2. O(n):称为线性时间(linear time)
  它执行的时间会随数据集合的大小而线性成长。我们可以找到一个例子是在一个没有排列过的资料集中要找一个最大元素,且我们以简单的方式去解释其内容,直到我们将所有的数据都找过并且找到最大值为止。
3.O(log2n):称为次线性时间(sub-linear time)
  这一种函式的成长速度比线性的程序还慢,而此常数(它是不成长的)的情形还快。
4.O(n2):称为平方时间(quadratic time)
  算法则执行时间会成二次方的成长,这种会变得不切实际,特别是当数据集合的大小变得很大时。
5.O(n3):称为立方时间(cubic time)
6.O(2n):称为指数时间(exponential time)
7.O(n1og2n)
介于线性及二次方成长的中间之行为模式。


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-07-12 15:56
快速回复:新手0起步``问个问题``
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014492 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved