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

  1. /* index1.c: Sort indirectly via an index */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. #define NELEMS 4
  8.  
  9. static int comp(const void *, const void *);
  10.  
  11. static int some_ints[NELEMS] = {40,12,37,15};
  12.  
  13. main()
  14. {
  15.     size_t i;
  16.     size_t idx[NELEMS] = {0,1,2,3};
  17.     
  18.     qsort(idx,NELEMS,sizeof idx[0],comp);
  19.  
  20.     printf("Sorted array:\n");
  21.     for (i = 0; i < NELEMS; ++i)
  22.         printf("%d\n",some_ints[idx[i]]);
  23.     
  24.     printf("\nOriginal array:\n");
  25.     for (i = 0; i < NELEMS; ++i)
  26.         printf("%d\n",some_ints[i]);
  27.     return 0;
  28. }
  29.  
  30. static int comp(const void *p1, const void *p2)
  31. {
  32.     size_t i = * (size_t *) p1;
  33.     size_t j = * (size_t *) p2;
  34.  
  35.     return some_ints[i] - some_ints[j];
  36. }
  37.  
  38. /* Output:
  39. Sorted array:
  40. 12
  41. 15
  42. 37
  43. 40
  44.  
  45. Original array:
  46. 40
  47. 12
  48. 37
  49. 15
  50. */
  51.