6C. Grading

Grading is the assignment of an ordinal number to each item of an array, with all numbers distinct, and with the earliest of equal values being assigned a lower ordinal number. Grading can be used to produce the permutation that will put an array in order. Since sorting is a primitive operation in J, grading is more commonly used to put a companion array into an order derived from another array. For example, a table of addresses may be put into an order derived from a table of last names.

m0=: /:

Grade y up

m1=: \:

Grade y down

d2=: /:@i.

Grade y up according to key x

d3=: \:@i.

Grade y down according to key x

{{{ y=:'leap','note',:'file'

+


+


+


+


+


+ |leap|2 0 1|file|1 0 2|note| |note| |leap| |leap| |file| |note| |file| +


+


+


+


+


+

+


+


+


+


+ |3 1 2 5 6 0 4|aenorst|4 0 6 5 2 1 3|tsronea| +


+


+


+


+ }}}