相关疑难解决方法(0)

大O符号和算法

我正在研究并试图实现一些算法.我正在尝试理解Big O表示法,我无法弄清楚下面算法的Big O复杂性:

while (a != 0 && b != 0)
{
    if (a > b)
        a %= b;
    else
        b %= a;
}

if (a == 0)
    common=b;
else
    common=a;
Run Code Online (Sandbox Code Playgroud)

c# algorithm big-o

1
推荐指数
1
解决办法
1851
查看次数

算法性能说明Ex:O(n)

可能重复:
Big O的简单英文解释

亲爱的大家,

当我阅读有关某些算法的信息时,偶尔会遇到算法性能信息,例如:O(1),O(n),O(n ^ 2)等.

我是否可以获得有关如何翻译和理解这些性能数据的解释?什么样的O(n)变体可用,它们在实践中意味着什么?

谢谢.

algorithm performance

1
推荐指数
1
解决办法
3970
查看次数

大O符号是什么意思?

可能重复:
Big O的简单英文解释

我需要弄清楚O(n)以下内容:

f(n) = 10n^2 + 10n + 20
Run Code Online (Sandbox Code Playgroud)

我能想到的只是50,而且我太尴尬了,不知道我是怎么想出来的.

有人可以解释它意味着什么以及我应该如何计算它f(n)

algorithm big-o

1
推荐指数
1
解决办法
5432
查看次数

什么时候出现BigOh符号O(log n)?

你能解释是什么让算法成为O(log n)吗?

如果您能用简单的代码展示它,我将不胜感激.

谢谢

algorithm big-o data-structures

1
推荐指数
1
解决办法
515
查看次数

无法在Java中向二进制搜索树添加1,000,000个元素

我正在将二进制搜索树作为一项任务.
当我尝试添加1,000,000个元素时,我遇到了问题.
插入15,000个元素后我收到错误:

线程"main"中的异常java.lang.StackOverflowError

我的代码有问题我无法找到我做错的地方.

public class BinarytreeInsert {

    public static void main(String[] args) {
        new BinarytreeInsert().run();
    }

    static class Node {

        Node left;
        Node right;
        int value;

        public Node(int value) {
            this.value = value;
        }
    }

    public void run() {
        Node rootnode = new Node(25);
        System.out.println("Building tree with root value " + rootnode.value);
        System.out.println("=================================");
        for(int i = 0 ; i<1_000_000;i++)
            insert(rootnode, i);

    }


    public void insert(Node node, int value) {
        if (value < node.value) {
            if (node.left != null) …
Run Code Online (Sandbox Code Playgroud)

java algorithm binary-tree binary-search-tree

1
推荐指数
1
解决办法
1037
查看次数

二分查找与 For 循环

Arrays.binarySearch()很简单,从性能角度来看,使用与使用迭代循环(遍历数组中的所有项目 - 线性搜索)来查找 Array 或 ArrayList 中的值相比如何?最终用户是否能够看到使用其中任何一个的任何延迟?

还有在某些特定情况下一种方法比另一种方法更好吗?

java arrays iteration search

1
推荐指数
1
解决办法
3066
查看次数

用于编程的基本排序和搜索算法(Java)

我在哪里可以学习编程算法(java等),因为当我搜索排列,紊乱,排序等程序时,我总能找到数学算法.

示例:计算紊乱

由此,得出以下关系:

!n = (n - 1) (!(n-1) + !(n-2)).\,
where !n, known as the subfactorial, represents the number of derangements, with the starting values !0 = 1 and !1 = 0.

Notice that this same recurrence formula also works for factorials with different starting values. That is 0! = 1, 1! = 1 and

n! = (n - 1) ((n-1)! + (n-2)!)\,
which is helpful in proving the limit relationship with e below.

Also, the following formulae …
Run Code Online (Sandbox Code Playgroud)

java sorting algorithm

1
推荐指数
1
解决办法
436
查看次数

Big-O如果内部for循环以数字=> 1开头

我试图了解如果内部循环不是从0开始,而是1,2,3或更多,那么big-o符号是否会改变.

例如,它改变了这个内部for循环从3开始的任何东西,还是大的o仍然是n平方?

for(int i = 0; i < n; i++)
    for(int j = 3; j < n; j++)
Run Code Online (Sandbox Code Playgroud)

当我在它的时候,我不妨问一下,如果i或j在每次迭代中增加3,它是否会有所不同.谢谢你的帮助!

big-o

1
推荐指数
1
解决办法
99
查看次数

Big(O)机器是否依赖?

我对Big(O)符号感到困惑.Big(O)机器是独立的还是机器独立的?(在我们运行算法的计算机中的机器)在i3处理器和i7处理器中使用快速排序对1000个数字进行排序是否相同?在计算时间复杂度时,为什么我们不考虑机器及其处理器速度?我是这个东西的初学者.

algorithm big-o

0
推荐指数
1
解决办法
200
查看次数

Java 中这个 PrimeNumbers 算法的时间复杂度

我是时间复杂度分析的新手...

如果有人能告诉我这是否是二次的,我将不胜感激。而且如果有更简单的方法可以使它成为o(1)。

public class PrimeNumbers {
    public boolean isPrime(int n) {
        boolean retValue = true;
        for (int i = 2; i < n; i++) {
            if (n % 2 == 0) {
                retValue = false;
            }
        }
        return retValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以分解它为什么是这样,它肯定会帮助我学习。:)

非常感谢!

java complexity-theory big-o primes time-complexity

0
推荐指数
1
解决办法
979
查看次数

我的算法的复杂性

问题:哪个复杂性有我的功能?以及如何找到算法的时间复杂度?

该函数检查给定的int数组是否已排序.

我的代码:

public static boolean isSorted(double d[]){
boolean sortedAscending = true;
boolean sortedDescending = true;

boolean bool = false;
for (int i = 0; i < d.length-1; i++) {
    if(d[i] > d[i+1] && sortedAscending){
        sortedAscending = false;
        if(bool){
            break;
        }
        bool = true;
    }
    else if(d[i] < d[i+1]&& sortedDescending){
        sortedDescending = false;
        if(bool){
            break;
        }
        bool = true;
    }
}
return sortedAscending || sortedDescending;
}
Run Code Online (Sandbox Code Playgroud)

c++ algorithm complexity-theory time-complexity

0
推荐指数
1
解决办法
96
查看次数

为什么只有最高度的多项式为大哦?

为什么我们只采用Big Oh表示法的最高次多项式.我知道我们可以删除常数,因为它们对于非常高的'n'值无关紧要.

但是,假设算法需要(nlogn + n)时间,那么为什么我们在这种情况下忽略'n'.而大哦出来是O(nlogn).
Big Oh必须是算法所用时间的上限.那么,不应该是(nlogn + n),即使是非常高的n值?

java algorithm

0
推荐指数
1
解决办法
150
查看次数

在Python中测量乘法的大O

据我了解,乘法的复杂度顺序是二次的,因此,如果将两个1位数字相乘将有1个运算,两个2位数字相加将有4个运算,两个3位数字9个运算等等上。

我想通过定时执行将两个数字相乘的程序来查看这种复杂性。出乎意料的是,无论数字的大小如何,执行时间都是相同的。

import time

num1 = 135
num2 = 342

start = time.time()
total = num1 * num2
finish = time.time()
elapsed = finish - start

print elapsed
Run Code Online (Sandbox Code Playgroud)

因此,结果是9.53674316406e-07我将两个3位数或两个30位数相乘。

我误会什么?

python math big-o

-1
推荐指数
1
解决办法
484
查看次数