On Monday, 12 June 2017 at 01:36:04 UTC, Stefan Koch wrote:
On Monday, 12 June 2017 at 01:02:58 UTC, helxi wrote:
Is it possible to sum an array in O(1)?

No.
If you want to sum the elements you have to at-least look at all the elements.
So it'll always be O(N).
it's the best you can do.

On a multi-core system we can do better:

auto nums = iota(10_000_000.0f);
auto sum = taskPool.reduce!"a + b"(nums);

Given arbitrary parallelism (yeah, right!), this will be O(log(N)). For real-world systems, it might give a speed-up for large arrays, but won't reduce the big-O complexity. Of course, there will also be overhead to such a solution, so there is a limit to how much one'd actually benefit from it.

--
  Biotronic
  • O(1) sum helxi via Digitalmars-d-learn
    • Re: O(1) sum Stefan Koch via Digitalmars-d-learn
      • Re: O(1) sum Biotronic via Digitalmars-d-learn
    • Re: O(1) sum Ali Çehreli via Digitalmars-d-learn

Reply via email to