在具有n个元素的列表上执行O(1)操作的指令数是多少?

jes*_*val 2 algorithm big-o

一个.总是一个
b.不超过n
c.一些固定的数字
d.不超过3

我选择"不超过n",但我的老师告诉我这是错的.她没有说出错误的原因,如果错了,那么它的答案是什么?

emo*_*ory 7

答案是没有.以下方法是O(1).

  1. 显然它并不总是一个.
  2. 它有时超过n.
  3. 显然,这不是一个固定的数字.
  4. 它总是超过三个.

//

public void run ( List of size n )
{
     for ( int i = 0 ; i < 100 + ( n  % 100 ) ; i ++ )
     {
          step ( ) ;
     }
}
Run Code Online (Sandbox Code Playgroud)


Uku*_*kit 5

正确的答案是c.一些固定的数字.这个想法是,无论元素的数量如何,操作总是花费相同的时间. 看到恒定时间

  • Hrrrrrm._O(1)_意味着操作_at most_某个常量时间,这只意味着有一个恒定的上限 - 它不一定总是完全相同的操作数.我会说这些都不是很准确,但是,哎呀,更接近事物的精神. (2认同)