sshheellllssoorrtt() -- General Function (libc)

Sort arrays in memory
vvooiidd sshheellllssoorrtt(_d_a_t_a, _n, _s_i_z_e, _c_o_m_p)
cchhaarr *_d_a_t_a; iinntt _n, _s_i_z_e; iinntt (*_c_o_m_p)();

sshheellllssoorrtt()  is  a generalized  algorithm  for sorting  arrays  of data  in
memory,  using D.  L.  Shell's sorting  method.  sshheellllssoorrtt()  works with  a
sequential array  of memory called _d_a_t_a,  which is divided into  _n parts of
_s_i_z_e bytes  each.  In  practice, _d_a_t_a  is usually an  array of  pointers or
structures, and _s_i_z_e is the ssiizzeeooff the pointer or structure.

Each routine  compares pairs of items and exchanges  them as required.  The
user-supplied routine to which  _c_o_m_p points performs the comparison.  It is
called repeatedly, as follows:

    (*comp)(p1, p2)
    char *p1, *p2;

Here, _p_1 and _p_2 each point  to a block of _s_i_z_e bytes in the _d_a_t_a array.  In
practice, they are usually  pointers to pointers or pointers to structures.
The comparison  routine must return  a negative, zero,  or positive result,
depending  on whether  _p_1  is less  than,  equal to,  or  greater than  _p_2,
respectively.

_E_x_a_m_p_l_e
For an example of how to use this routine, see the entry for ssttrriinngg.

_S_e_e _A_l_s_o
lliibbcc
_T_h_e _A_r_t _o_f _C_o_m_p_u_t_e_r _P_r_o_g_r_a_m_m_i_n_g, vol. 3, pp. 84_f_f, 114_f_f

_N_o_t_e_s
For a discussion  of how the sshheellllssoorrtt algorithm differs  from that used by
qqssoorrtt(), see the Lexicon entry for qqssoorrtt().
