Why?  (there is a built in sort involved in a=:/:a)
If I am sorting, something built into the language may be more appropriate.
So, Is it easier or more efficient than the sorting now available?.

It would help me, and many others,in learning, to add documentation (I can look up "bubble sort" concepts and go through the steps in the one liner. --------------but------------------- from a learning approach some breakdown would be appreciated-possibly an explicit approach- with comments- leading to a tacit form- this forum does present modifications and improvements which are welcome.

Be it known that I am an old fart with a "devil's advocate" view -being critical- often right-more often wrong! (first program written was in MAD in 1961- card input, and reams of paper output if lucky- otherwise an ascii picture of Alfred E Neuman with "this is Mad!' graduated to APL when it became available and recently trying to learn the best so far--J).

However, I enjoy your contributions and the support I have received from this forum.

Don Kelly



On 27/05/2014 7:38 AM, 'Pascal Jasmin' via Programming wrote:
    bs
  =: }.@:] ,~ (<. {.) , (>. {.)  NB. name not used below one liner

    (}.@:] ,~ (<. {.) , (>. {.))/^:a: ? ($ ]) 25
23  0 22  7 14 15  8 18  4  5  2  6 17 22  7  3 15 12 22 20  0 13  8  3  6
  0 23  0 22  7 14 15  8 18  4  5  2  6 17 22  7  3 15 12 22 20  3 13  8  6
  0  0 23  2 22  7 14 15  8 18  4  5  3  6 17 22  7  3 15 12 22 20  6 13  8
  0  0  2 23  3 22  7 14 15  8 18  4  5  3  6 17 22  7  6 15 12 22 20  8 13
  0  0  2  3 23  3 22  7 14 15  8 18  4  5  6  6 17 22  7  8 15 12 22 20 13
  0  0  2  3  3 23  4 22  7 14 15  8 18  5  6  6  7 17 22  8 12 15 13 22 20
  0  0  2  3  3  4 23  5 22  7 14 15  8 18  6  6  7  8 17 22 12 13 15 20 22
  0  0  2  3  3  4  5 23  6 22  7 14 15  8 18  6  7  8 12 17 22 13 15 20 22
  0  0  2  3  3  4  5  6 23  6 22  7 14 15  8 18  7  8 12 13 17 22 15 20 22
  0  0  2  3  3  4  5  6  6 23  7 22  7 14 15  8 18  8 12 13 15 17 22 20 22
  0  0  2  3  3  4  5  6  6  7 23  7 22  8 14 15  8 18 12 13 15 17 20 22 22
  0  0  2  3  3  4  5  6  6  7  7 23  8 22  8 14 15 12 18 13 15 17 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8 23  8 22 12 14 15 13 18 15 17 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 23 12 22 13 14 15 15 18 17 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 23 13 22 14 15 15 17 18 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 23 14 22 15 15 17 18 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 23 15 22 15 17 18 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 23 15 22 17 18 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 15 23 17 22 18 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 15 17 23 18 22 20 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 15 17 18 23 20 22 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 15 17 18 20 23 22 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 15 17 18 20 22 23 22 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 15 17 18 20 22 22 23 22
  0  0  2  3  3  4  5  6  6  7  7  8  8 12 13 14 15 15 17 18 20 22 22 22 23


A recursive "optimised" version

    ((}.@:] ,~ (<.{.) , (>.{.))/^:(7<#)@:}.@:] ,~ (<.{.) , (>.{.))/^:a:    ? ($ 
]) 25
1 1 6 19 14 13 11  9 7  1 9 15  3 15  5 18 16  2  4 13  4 24 24 15 19
1 1 1  2  3  6  4 19 4 14 5 13  7 11  9  9 13 15 15 15 16 18 19 24 24
1 1 1  2  3  4  4  5 6  7 9  9 11 13 13 19 14 15 15 15 16 18 19 24 24
1 1 1  2  3  4  4  5 6  7 9  9 11 13 13 14 15 15 15 16 18 19 19 24 24

the name bs can be substituted for the leftmost part.
^:(7<#) -- only applies bs to the rest of the list if it is at least 7 items long.  The 
number is arbitrary, though an error occurs if it is not at least ^:(1<#) items long.  The 
"optimization" just eliminates the number of outer paths through the data, and so 
there is no need to make this number as small as possible, since there are likely further 
passes anyway.

----------------------------------------------------------------------
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