[Toc][Index]

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



Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs