[Haskell-cafe] Arrays performance
Paolo Veronelli
paolo.veronelli at gmail.com
Wed Jan 3 13:38:20 EST 2007
Quoting Udo Stenzel <u.stenzel at web.de>:
> paolo.veronelli at gmail.com wrote:
>
> It isn't, but not for the reasons you might suspect. You're using
> 'nub', which is quadratic, and your 'coupage' is also quadratic because
> it uses 'lookup' on a list, which is linear, a linear number of times.
> You can get this down to O(n * log n) if you replace these lists by
> Data.Map and Data.Set, to get down to O(n) you need arrays there, too,
> but that would be pointless, because you're also using 'sort', which is
> already in O(n * log n). The core of the algorithm is clearly linear in
> the length of its input.
>
> (Btw, putting 'devil' into a state monad doesn't make much sense. I
> think, ordinary recursion would be more clear. In fact, it's a
> 'foldl'.)
Ok, I've simplified some code and moved to foldl, to collect the result.
I paste new version in case you care give me some moe suggestion.
Thanks.
Paolino
More information about the Haskell-Cafe
mailing list