home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / refer / shell.c < prev    next >
Encoding:
Text File  |  1979-01-10  |  430 b   |  25 lines

  1. shell (n, comp, exch)
  2.     int (*comp)(), (*exch)();
  3. /* SORTS UP.  IF THERE ARE NO EXCHANGES (IEX=0) ON A SWEEP
  4.   THE COMPARISON GAP (IGAP) IS HALVED FOR THE NEXT SWEEP */
  5. {
  6.     int igap, iplusg, iex, i, imax;
  7.     igap=n;
  8. while (igap > 1)
  9.     {
  10.     igap /= 2;
  11.     imax = n-igap;
  12.     do
  13.         {
  14.         iex=0;
  15.         for(i=0; i<imax; i++)
  16.             {
  17.             iplusg = i + igap;
  18.             if ((*comp) (i, iplusg) ) continue;
  19.             (*exch) (i, iplusg);
  20.             iex=1;
  21.             }
  22.         } while (iex>0);
  23.     }
  24. }
  25.