home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_11_04 / 1104111b < prev    next >
Text File  |  1993-02-05  |  667b  |  26 lines

  1. /* ssort.c: Generic selection sort */
  2.  
  3. #include <stddef.h>
  4.  
  5. void ssort(void *array, size_t nelems, size_t size,
  6.   int (*comp)(const void *, const void *))
  7. {
  8.     size_t i, j, n;
  9.     
  10.     for (i = 0; i < nelems-1; ++i)
  11.         for (j = i+1; j < nelems; ++j)
  12.         {
  13.             char *p1 = (char *) array + i*size;
  14.             char *p2 = (char *) array + j*size;
  15.             if (comp(p1,p2) > 0)
  16.                 for (n = 0; n < size; ++n)
  17.                 {
  18.                     /* Swap elements byte-by-byte */
  19.                     char t = p1[n];
  20.                     p1[n] = p2[n];
  21.                     p2[n] = t;
  22.                 }
  23.         }
  24. }
  25.  
  26.