C   42

qsort

Guest on 11th July 2022 07:32:25 PM

  1. randomise(strings, n)
  2. char *strings[];
  3. int n;
  4. {
  5.     int i;
  6.     int v;
  7.     char *t;
  8.  
  9.      
  10.     for (i = 0; i < 1000 ; i++) {
  11.         v = rand() % 1000 ;
  12.         t = strings[v];
  13.         strings[v] = strings[i];
  14.         strings[i] = t;
  15.     }
  16. }
  17.  
  18. check_order(sort_type, strings, n)
  19. char *sort_type;
  20. char *strings[];
  21. int n;
  22. {
  23.     int i;
  24.  
  25.     for (i = 0; i < n; i++) {
  26.         if (atoi(strings[i]) != i) {
  27.             printf("%s sort failed - exiting\n", sort_type);
  28.             exit(1);
  29.         }
  30.     }
  31. }
  32.  
  33. qs_string_compare(a, b)
  34. char *a,*b;
  35. {
  36.     return strcmp(*(char **)a, *(char **)b);
  37. }
  38.  
  39. main()
  40. {
  41.     char *strings[1000 ], *strings_copy[1000 ];
  42.     char buffer[1000 *(6 +1)];
  43.     char *p;
  44.     int i;
  45.  
  46.     p = buffer;
  47.     for (i = 0; i < 1000 ; i++) {
  48.         sprintf(p, "%06d" , i);
  49.         strings[i] = p;
  50.         p += 6 +1;
  51.     }
  52.     randomise(strings, 1000 );
  53.  
  54.     memcpy(strings_copy, strings, sizeof(strings));
  55.     qsort(strings_copy, 1000 , sizeof(char *), qs_string_compare);
  56.     check_order("Quick", strings_copy, 1000 );
  57. }

Raw Paste


Login or Register to edit or fork this paste. It's free.