I would think sorting characters would count the occurrences of each character and then return

count # a.

Henry Rich

On 3/5/2014 4:58 PM, Thomas Costigliola wrote:
Is /:~ on characters using a radix sort? Even so, both sort and from I
would think is O(N). What is all the overhead in from?


On Wed, Mar 5, 2014 at 4:45 PM, Raul Miller <[email protected]> wrote:

The rascal!

--
Raul


On Wed, Mar 5, 2014 at 4:38 PM, Joe Bogner <[email protected]> wrote:

hey hey - I posted my first answer before looking at the source and it
didn't change my answer. Also, Roger has the source in his head and it
wasn't ruled out of bounds.

On Wed, Mar 5, 2014 at 4:35 PM, Raul Miller <[email protected]>
wrote:
My guess would be that it has something to do with cache coherence.

Indexing is random access, sorting is more sequential in nature.

But that's just a guess, because I did not cheat and look at the source
or
anything (at least... not today).

Thanks,

--
Raul



On Wed, Mar 5, 2014 at 2:45 PM, Roger Hui <[email protected]>
wrote:

That's my alternative faster expression as well.  But the more
interesting
question is, why is it faster?  Since we do the grade in both cases,
the
comparison is between /:~x and g{x (or x{~g) with g pre-computed.  The
answer does not depend knowledge specific to J.





On Wed, Mar 5, 2014 at 11:38 AM, Joe Bogner <[email protected]>
wrote:

Sorting and grading separately seems faster

timer=: 6!:2
x=:(1e7 $ 26?26) { 'abcdefghijklmnopqrstuvwxyz'
NB. incumbent
timer 's=: x{~g=: /:x'
0.0914002

NB. alternate
timer 'S=: /:~x[G=: /:x'
0.0668677

  s-:S
1
    G-:g
1


I am speculating that sorting does it in place? which is faster than
the selection from the grade



On Wed, Mar 5, 2014 at 2:02 PM, Raul Miller <[email protected]>
wrote:
Hmm...

G=:a.i.S=:/:~x
is faster.

But while s-:S, g and G are different.

So I'm drawing a blank here, on how to make the grade.

Thanks,

--
Raul



On Wed, Mar 5, 2014 at 1:52 PM, Roger Hui <
[email protected]>
wrote:

Suppose x is a long vector of characters and you need both its
sort
and
its
grade.  Can you do it faster than s=: x{~g=: /:x ?

Posed this way, the answer is of course yes.  But how, and why is
it
faster?

----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm


----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to