计算机科学:比较运行时间

学习计算机科学的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

例子问题1:比较运行时间

For (int I = 0;I < n;+ + i) {

For (int j = 1;J < n;J *= 2){

someFunction ();

}

}

对于上面的代码,用大O符号表示的运行时是多少?

可能的答案:

以上都不是

O(nlogn)

O (

O(logn))

O(n)

正确答案:

O(nlogn)

解释

乍一看,我们可能会倾向于选择O()因为有2个for循环。但是,经过仔细检查,我们可以看到第一个循环将产生O(n)的运行时间,但第二个循环不会。第二个循环只有O(log(n))的运行时间,因为“j”每次迭代都翻倍,并且不线性增加。这将产生O(log(n)),因为O(log(n))的运行时间要快得多。最终结果是O(nlog (n))

大学导师的学习工具