REXX Tips & Tricks, Version 2.80


Inf-HTML [About][Toc][Index] 0.9b (c) 1995 Peter Childs


Another sort routine



I don't know the type of this sort algortihm. 
Captured from a message from Rony Flatscher in a public Internet news 
group (see Internet - Newsgroups) 

 
/* ------------------------------------------------------------------ */
/* function: sort routine                                             */
/*                                                                    */
/* call:     sort                                                     */
/*                                                                    */
/* returns:  nothing                                                  */
/*                                                                    */
/* notes:    You must save the elements to sort in the stem "STEM."   */
/*           stem.0 must contain the number of elements in the stem.  */
/*                                                                    */
/* reference: Knuth, "Algorithms"                                     */
/*                                                                    */
Sort: PROCEDURE EXPOSE stem.

                        /* define M for passes                        */
  M = 1
  do while (9 * M + 4) < stem.0
     M = M * 3 + 1
  end /* do while */

                       /* sort stem                                  */
  do while M > 0
     K = stem.0 - M
     do J = 1 to K
        Q = J
        do while Q > 0
           L = Q + M

           if stem.Q <<= stem.L then
             leave

                       /* switch elements                            */
           tmp      = stem.Q
           stem.Q = stem.L
           stem.L = tmp
           Q = Q - M
        end /* do while Q > 0 */
     end /* do J = 1 to K */
     M = M % 3
  end /* while M > 0 */
RETURN



Inf-HTML End Run - Successful