       Re: Efficient Histogram Algorithm?

• To: mathgroup at smc.vnet.net
• Subject: [mg113142] Re: Efficient Histogram Algorithm?
• From: Julian Francis <julian.w.francis at gmail.com>
• Date: Fri, 15 Oct 2010 13:50:41 -0400 (EDT)
• References: <i9276l\$3fg\$1@smc.vnet.net>

```Have gone with jhistogram3:

jhistogram3[list_] :=
Sort[Tally[Join[Range[0, 255], list]]][[All, 2]] - 1

In:= Timing[hist3 = jhistogram3[randomList];][]

Out= 0.015

In:= tallybased =
With[{tallies = Tally[randomList]},
Split[Sort[
Join[tallies,
Transpose[{Range[0, 255],
ConstantArray[0,
256]}]]], #[] == #2[] &][[All, -1, -1]]]; // Timing

Out= {0.016, Null}

It is based on Bob's solution, but incorporates (insight from Darren)
a fix where if there were missing values in the random array, it
wouldn't have returned a value (of 0) for that.
The Range ensures that all values in the histogram will return, then I
subtract one from each of the histogram buckets to compensate for the
fact that I put an extra one in in the
first place.

They perform pretty similarly, I just find the first one easier for me
to understand.

Thanks all.
Julian.

```

• Prev by Date: Re: local variables - Module, For loop
• Next by Date: Re: something nice I found today, return multiple values from a function
• Previous by thread: Re: Efficient Histogram Algorithm?
• Next by thread: Travelling Salesman Problem with LinearProgramming