相关疑难解决方法(0)

更快实现总和(用于Codility测试)

以下简单实现如何才能sum更快?

private long sum( int [] a, int begin, int end ) {
    if( a == null   ) {
        return 0;
    }
    long r = 0;
    for( int i =  begin ; i < end ; i++ ) {
       r+= a[i];
    }
    return r;
}
Run Code Online (Sandbox Code Playgroud)

编辑

背景是有序的.

阅读关于编码恐怖的最新条目,我来到这个网站:http://codility.com,它有这个有趣的编程测试.

无论如何,我在提交中得到了60分中的60分,而且基本上(我认为)是因为这个实现总和,因为那些我失败的部分是性能部分.我得到TIME_OUT_ERROR了

所以,我想知道算法中的优化是否可行.

因此,不允许内置函数或汇编.我可以用C,C++,C#,Java或其他任何方式完成.

编辑

像往常一样,mmyers是对的.我确实对代码进行了分析,我看到大部分时间花在了这个函数上,但我不明白为什么.所以我所做的就是抛弃我的实现并从一个新实现开始.

这次我得到了一个最佳解决方案[根据San Jacinto O(n) - 请参阅下面的MSN评论 - ]

这次我在Codility上获得了81%,我认为这已经足够了.问题是我没有花30分钟.但大约2小时.但我想这让我仍然是一个优秀的程序员,因为我可以解决这个问题,直到找到最佳解决方案:

这是我的结果.

我对codility的结果http://img534.imageshack.us/img534/6804/codility.png

我从来不明白那些"......的组合"是什么,也不知道如何测试"extreme_first"

c# c++ java algorithm optimization

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

为什么C编译器指定长为32位,长为64位?

在128位数字变为现实之前,长64位并保留很长时间是不是更有意义?

c bit 32bit-64bit long-long long-integer

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

标签 统计

32bit-64bit ×1

algorithm ×1

bit ×1

c ×1

c# ×1

c++ ×1

java ×1

long-integer ×1

long-long ×1

optimization ×1