小编OmG*_*OmG的帖子

获得π值的最快方法是什么?

我正在寻找获得π值的最快方法,作为个人挑战.更具体地说,我使用的方法不涉及使用#define常量M_PI,或者对数字进行硬编码.

下面的程序测试了我所知道的各种方式.从理论上讲,内联汇编版本是最快的选择,但显然不便于携带.我已将其作为基线与其他版本进行比较.在我的测试中,使用内置4 * atan(1)函数,在GCC 4.2上版本最快,因为它会自动将其折叠atan(1)为常量.根据-fno-builtin指定,atan2(0, -1)版本最快.

这是主要的测试程序(pitimes.c):

#include <math.h>
#include <stdio.h>
#include <time.h>

#define ITERS 10000000
#define TESTWITH(x) {                                                       \
    diff = 0.0;                                                             \
    time1 = clock();                                                        \
    for (i = 0; i < ITERS; ++i)                                             \
        diff += (x) - M_PI;                                                 \
    time2 = clock();                                                        \
    printf("%s\t=> %e, time => %f\n", #x, diff, diffclock(time2, time1));   \
}

static inline double
diffclock(clock_t time1, clock_t time0)
{ …
Run Code Online (Sandbox Code Playgroud)

language-agnostic unix algorithm performance pi

315
推荐指数
21
解决办法
5万
查看次数

8岁儿童的大O?

我问的更多关于这对我的代码意味着什么.我在数学上理解这些概念,我只是很难在概念上围绕它们的意思.例如,如果要对数据结构执行O(1)操作,我理解它必须执行的操作量不会增加,因为有更多项.而O(n)操作意味着您将对每个元素执行一组操作.有人可以在这里填空吗?

  • 就像O(n ^ 2)操作究竟会做什么一样?
  • 如果一个操作是O(n log(n)),这意味着什么呢?
  • 有人必须抽烟才能写出O(x!)?

theory algorithm big-o metrics

304
推荐指数
12
解决办法
4万
查看次数

如何访问向量中的最后一个值?

假设我有一个嵌套在数据帧中的一个或两个级别的向量.是否有快速而肮脏的方式来访问最后一个值,而不使用该length()功能?PERL的$#特殊变量是什么?

所以我想要像:

dat$vec1$vec2[$#]
Run Code Online (Sandbox Code Playgroud)

代替

dat$vec1$vec2[length(dat$vec1$vec2)]
Run Code Online (Sandbox Code Playgroud)

r vector dataframe

267
推荐指数
10
解决办法
29万
查看次数

递归或迭代?

如果我们在算法中使用循环而不是递归,反之亦然,那么两者是否可以起到同样的作用?例如:检查给定的字符串是否为回文.我已经看到许多程序员使用递归作为一种手段来展示一个简单的迭代算法可以适应账单.编译器在决定使用什么方面起着至关重要的作用吗?

language-agnostic algorithm recursion performance

215
推荐指数
11
解决办法
14万
查看次数

为什么使用softmax而不是标准规范化?

在神经网络的输出层中,通常使用softmax函数来近似概率分布:

在此输入图像描述

由于指数,计算起来很昂贵.为什么不简单地执行Z变换以使所有输出都是正的,然后通过将所有输出除以所有输出的总和来归一化?

math neural-network softmax

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

在avl树的红色黑树

除了节点中的红色和黑色外,AVL和红黑树都是自平衡的.选择红黑树而不是AVL树的主要原因是什么?红黑树有哪些应用?

algorithm red-black-tree data-structures

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

Java的子串()的时间复杂度

String#substring()Java中方法的时间复杂度是多少?

java substring time-complexity

77
推荐指数
4
解决办法
5万
查看次数

笛卡尔积产品数据框

我有三个或更多的自变量表示为R向量,如下所示:

A <- c(1,2,3)
B <- factor(c('x','y'))
C <- c(0.1,0.5)
Run Code Online (Sandbox Code Playgroud)

我想采用所有这些产品的笛卡尔积,并将结果放入数据框中,如下所示:

A B C
1 x 0.1
1 x 0.5
1 y 0.1
1 y 0.5
2 x 0.1
2 x 0.5
2 y 0.1
2 y 0.5
3 x 0.1
3 x 0.5
3 y 0.1
3 y 0.5
Run Code Online (Sandbox Code Playgroud)

我可以通过手动写出调用来执行此操作rep:

d <- data.frame(A = rep(A, times=length(B)*length(C)),
                B = rep(B, times=length(A), each=length(C)),
                C = rep(C, each=length(A)*length(B))
Run Code Online (Sandbox Code Playgroud)

但是必须有更优雅的方式去做,是吗? productitertools部分工作中,但我找不到任何方法来吸收迭代器的输出并将其放入数据框中.有什么建议?

ps此计算的下一步看起来像

d$D <- f(d$A, d$B, d$C)
Run Code Online (Sandbox Code Playgroud)

所以如果你知道一次做两个步骤的方法,这也会有所帮助.

r dataframe

58
推荐指数
5
解决办法
4万
查看次数

47
推荐指数
4
解决办法
5万
查看次数

System.arraycopy(...)的时间复杂度?

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 是一种本地方法.

这种方法的时间复杂度是多少?

java algorithm time-complexity

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