home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / glibc-1.06 / stdlib / testsort.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-10  |  691 b   |  40 lines

  1. #include <ansidecl.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5.  
  6. int
  7. DEFUN(compare, (a, b), CONST PTR a AND CONST PTR b)
  8. {
  9.   return strcmp (*(char **) a, *(char **) b);
  10. }
  11.  
  12. int
  13. DEFUN_VOID(main)
  14. {
  15.   static char *lines[500];
  16.   static size_t lens[500];
  17.   size_t i;
  18.  
  19.   i = 0;
  20.   while (i < 500 && getline (&lines[i], &lens[500], stdin) > 0)
  21.     ++i;
  22.   if (i < 500)
  23.     lines[i] = NULL;
  24.  
  25.   while (--i > 0)
  26.     {
  27.       size_t swap = random () % i;
  28.       char *line = lines[swap];
  29.       lines[swap] = lines[i];
  30.       lines[i] = line;
  31.     }
  32.  
  33.   qsort (lines, 500, sizeof (char *), compare);
  34.  
  35.   for (i = 0; i < 500 && lines[i] != NULL; ++i)
  36.     fputs (lines[i], stdout);
  37.  
  38.   return 0;
  39. }
  40.