Formerly ../stdlib/testsort.c.~2~
authorroland <roland>
Mon, 11 May 1992 06:15:01 +0000 (06:15 +0000)
committerroland <roland>
Mon, 11 May 1992 06:15:01 +0000 (06:15 +0000)
stdlib/testsort.c

index 5007b9e..fb6271c 100644 (file)
@@ -4,6 +4,12 @@
 #include <stdio.h>
 
 int
+DEFUN(compare, (a, b), CONST PTR a AND CONST PTR b)
+{
+  return strcmp (*(char **) a, *(char **) b);
+}
+
+int
 DEFUN_VOID(main)
 {
   static char *lines[500];
@@ -11,14 +17,22 @@ DEFUN_VOID(main)
   size_t i;
 
   i = 0;
-  while (i < 500 && getline (&lines[i], &lens[500]) > 0)
+  while (i < 500 && getline (&lines[i], &lens[500], stdin) > 0)
     ++i;
   if (i < 500)
     lines[i] = NULL;
 
-  qsort (lines, 500, sizeof (char *), strcmp);
+  while (--i > 0)
+    {
+      size_t swap = random () % i;
+      char *line = lines[swap];
+      lines[swap] = lines[i];
+      lines[i] = line;
+    }
+
+  qsort (lines, 500, sizeof (char *), compare);
 
-  while (i < 500 && lines[i] != NULL)
+  for (i = 0; i < 500 && lines[i] != NULL; ++i)
     fputs (lines[i], stdout);
 
   return 0;