相关疑难解决方法(0)

STL性能O(ln(n))问题

请有人解释一下:

如果文档说STL std :: vector find element performace = O(ln(n)),那是什么意思.

O(ln(n))- 什么是" O ",在哪里我可以读到这个?

在那里我可以阅读其他STL容器性能的性能

非常感谢你

c++ performance big-o stl

4
推荐指数
3
解决办法
2712
查看次数

log(n)来自O(N)表示法

我知道什么是O(n)符号,我也理解如何得到O(n),O(n 2)等符号....

  • O(n)意味着我必须完成一次序列
  • O(n 2)表示我有两个嵌套循环遍历序列

但是我如何得到log(N)?

PS:我知道Collections API和一些具有O(n log n)遍历时间的类.我需要一个简单的解释.

algorithm big-o programming-languages

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

O(logn)+ O(n)是什么意思?

有人告诉我,我的代码应遵循O(logn)+ O(n)的复杂性指南.当提示澄清时,我被问到"代码的复杂性:)"无论如何,除了提供的任何澄清之外,我们将不胜感激.

code-complexity

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

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

如何计算算法的运行时间?

我已经阅读了一些算法书中的算法运行时,它表示为,O(n).例如,给定代码将在O(n)时间内运行以获得最佳情况并且在最坏情况下运行O(n 3).它是什么意思以及如何根据自己的代码计算它?它是否像线性时间一样,是否就像每个预定义的库函数都有自己的运行时一样,在调用它之前应该记住它?谢谢...

algorithm runtime

4
推荐指数
1
解决办法
3万
查看次数

所有排列的列表,但没有相反的数字

我需要创建一个所有排列的列表,但不包括那些符号变化相同的排列.

例如,从序列

[-2, -1, 1, 2]
Run Code Online (Sandbox Code Playgroud)

我会得到这样的所有排列:

[-2, -1], [-2, 1], [-1, -2], [-1, 2], [1, -2], [1, 2], [2, -1], [2, 1]
Run Code Online (Sandbox Code Playgroud)

目前我使用以下代码:

permutation_items = []
permutations = itertools.permutations(range_items, items)
permutation_item = list(permutations)
Run Code Online (Sandbox Code Playgroud)

例如range_items = [-2, -1, 1, 2]items = 2

然后消除我使用的所有相反的重复

for element in permutation_items:
    flag=0
    for j in element:
        if ((j in element) & ((j*-1) in element)):
            flag = 1
            break
    if flag == 0:
        all_solutions.append(element)
Run Code Online (Sandbox Code Playgroud)

我认为这不是最好的方法,因为首先我创建一个包含所有排列的列表然后我删除那些我不想要的,你能建议一个更好的方法吗?另外因为如果我需要创建一个包含10个或更多数字的排列列表,它就变得非常大......

你认为这些尺寸会有问题吗?

请注意:有了这些排列,我需要做进一步的操作(我需要找到给出所有可能的数字对的最小排列数),所以我认为我需要将它们存储在变量中,也因为在我的结尾处算法我需要将结果存储在一个文件中.

...好吧,你的回答非常好,我喜欢你的兴趣...现在,如果我使用我的变量'range_items'列出30个元素(正面和负面),代码使用的时间非常大,我想问你一个多线程的解决方案(所以我可以在具有许多内核的集群中加载代码)......是否可行?

python list permutation

3
推荐指数
2
解决办法
1668
查看次数

big-O表示法中的n是什么?

问题很简单,但我找不到足够好的答案.在关于大O符号最upvoted SO问题,它说:

例如,通常基于比较操作来比较排序算法(比较两个节点以确定它们的相对排序).

现在让我们考虑一下简单的冒泡排序算法:

for (int i = arr.length - 1; i > 0; i--) {
    for (int j = 0; j < i; j++) {
        if (arr[j] > arr[j+1]) {
            switchPlaces(...)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道最坏的情况是O(n²)最好的情况O(n),但究竟是n什么?如果我们尝试对已经排序的算法进行排序(最好的情况),我们最终什么都不做,那么为什么它仍然存在O(n)呢?我们仍在循环2个for循环,所以如果它应该是什么O(n²).n不能进行比较操作的次数,因为我们还是比较所有的元素吧?

algorithm complexity-theory big-o time-complexity

3
推荐指数
2
解决办法
1551
查看次数

PHP在随机位置比较两个字符串

PHP比较两个字符串

示例我得到了一串数字

1 2 2 1  and another is 2 1 2 1
Run Code Online (Sandbox Code Playgroud)

结果将是真实的,因为它只是1 2 2 1和2 2 1 1的位置

但如果价值是

1 2 2 2 and another is 2 1 2 1
Run Code Online (Sandbox Code Playgroud)

结果将返回false,因为在第一个字符串中它出现了3次出现2,无论我们如何将1 2 2 2位置洗牌,它都不会给出2 1 2 1

另一个可能的例子是

1 2 3 1 and another is 1 2 3 3
Run Code Online (Sandbox Code Playgroud)

结果也是假的,因为无论我们如何洗牌1231都不会给我们1233

我怎么能做这个比较,是否有任何PHP函数可以比较一个shuffle字符串与非shuffle字符串

也许我可以使用str_shuffle并执行一个独特的数组推送,直到我得到这个字符串的24个组合.

$input_string = "1221";
$array_string = ();

while( count($array_string) != 24 )
{
    $input_string = str_shuffle($input_string);
    array_push($array_string, $input_string);
    $array_string = array_unique($array_string);
}

//then lastly i …
Run Code Online (Sandbox Code Playgroud)

php

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

Algorithm complexity: if/else under for loop

I am wondering if in a situation like the following (an if/else statement under a for loop) the complexity would be O(n) or O(n^2):

for character in string:
    if character==something:
        do something
    else:
        do something else.
Run Code Online (Sandbox Code Playgroud)

Thank you!

complexity-theory for-loop if-statement

3
推荐指数
1
解决办法
2万
查看次数

困惑于n ^ 2和2 ^ n的大O.

我在一本书中读到,下面的表达式O(2^n + n^100)将被简化为:O(2^n)当我们删除无关紧要的部分时.我很困惑,因为根据我的理解,如果值n3那么部分n^100似乎有更高的执行次数.我错过了什么?

algorithm big-o runtime

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