Tag: 大o

确定给定代码的复杂性

给定一段代码,你将如何确定一般的复杂性。 我发现自己对Big O的问题感到困惑。 例如,一个非常简单的问题: for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.println("*"); } } 电讯局长以类似组合的方式解释了这一点 就像这样,select2 =(n(n-1))/ 2 = n ^ 2 + 0.5,然后去掉这个常数使得它变成n ^ 2。 我可以把inttesting值,并尝试但这个组合的事情是怎么进来的? 如果这是一个if语句呢? 复杂性如何确定? for (int i = 0; i < n; i++) { if (i % […]

O(n!)的例子?

O(n!)函数的例子(在代码中)是什么? 它应该采取适当数量的操作来参照n来运行; 也就是说,我在问时间的复杂性。

多重集合,地图和哈希映射的复杂性

我想知道在STL multiset,map和hash map类的Big O符号中的复杂性: 插入条目 访问条目 检索条目 比较条目

在计算时间方面,O(n)algorithm能否超过O(n ^ 2)?

假设我有两个algorithm: for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { //do something in constant time } } 这当然是O(n^2) 。 假设我也有: for (int i = 0; i < 100; i++) { for (int j = 0; j < n; j++) { //do something in constant […]

是大O(logn)日志基础?

对于二进制search树型数据结构,我看到大O表示法通常记为O(logn)。 在日志中使用小写“l”,这是否意味着以自然对数描述的对数基数e(n)? 对不起,这个简单的问题,但我一直无法区分不同的暗示对数。

“O(1)访问时间”是什么意思?

我曾经看过这个术语“O(1)访问时间”,意思是“很快”,但我不明白这是什么意思。 我在同一个环境中看到的另一个术语是“O(n)访问时间”。 难道有人能以简单的方式解释这些术语的含义吗? 也可以看看 大O符号是什么? 你用它吗? 八岁的大O?

下界和紧束缚的区别?

参考这个答案 ,什么是Theta(紧束缚)? 欧米茄是一个algorithm可能花费的最小时间,它的下界是相当明白的。 我们知道Big-O是上限,意味着algorithm可能需要的最大时间。 但是我不知道Theta。

确定recursion函数的复杂性(大O符号)

我明天有一个计算机科学中期,我需要帮助确定这些recursion函数的复杂性。 我知道如何解决简单的案例,但是我仍然在努力学习如何解决这些困难的案例。 这些只是我无法弄清的几个例子问题。 任何帮助将不胜感激,并将大大有助于我的学习,谢谢! int recursiveFun1(int n) { if (n <= 0) return 1; else return 1 + recursiveFun1(n-1); } int recursiveFun2(int n) { if (n <= 0) return 1; else return 1 + recursiveFun2(n-5); } int recursiveFun3(int n) { if (n <= 0) return 1; else return 1 + recursiveFun3(n/5); } void recursiveFun4(int n, […]

使用比O(n)更高效的find-min / find-max进行堆栈?

我有兴趣创build一个类似于支持以下操作的堆栈的Java数据结构,尽可能高效: Push,在堆栈顶部添加一个新元素, Pop,删除堆栈的顶层元素, Find-Max,返回(但不删除)堆栈的最大元素 Find-Min,返回(但不删除)堆栈的最小元素 这个数据结构最快的实现是什么? 我怎样才能用Java编写它?

大O和小O符号的区别

Big-O符号O(n)和Little-O符号o(n)什么区别?