home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / microcrn / issue_40.arc / C-REVIEW.ARC / SORT.C < prev   
C/C++ Source or Header  |  1987-09-23  |  1KB  |  63 lines

  1. /*
  2.      Program: Sort
  3.      Version: 1.00
  4.      Date:    September 12, 1987
  5.  
  6.      Sort a reverse order array of numbers using QuickSort. A general test
  7.      for C compilers.
  8. */
  9.  
  10. #define MAXITEMS 20000
  11.  
  12. int test[MAXITEMS];
  13.  
  14. void quicksort(int *,int);
  15. void qs(int *,int,int);
  16.  
  17. main()
  18.      {
  19.      int i, j;
  20.  
  21.      for (i = 0; i < MAXITEMS; ++i)
  22.           test[i] = MAXITEMS - i - 1;
  23.  
  24.      quicksort(test,MAXITEMS);
  25.      }
  26.  
  27. void quicksort(item,count)
  28. int *item;
  29. int count;
  30.      {
  31.      qs(item,0,count-1);
  32.      }
  33.  
  34. void qs(item,left,right)
  35. int *item;
  36. int left, right;
  37.      {
  38.      register int i, j;
  39.      int x, y;
  40.  
  41.      i = left;
  42.      j = right;
  43.      x = item[(i+j)/2];
  44.  
  45.      do
  46.           {
  47.           while (item[i] < x && i < right) i++;
  48.           while (x < item[j] && j > left)  j--;
  49.           if (i <= j)
  50.                {
  51.                y = item[i];
  52.                item[i] = item[j];
  53.                item[j] = y;
  54.                i++;
  55.                j--;
  56.                }
  57.           }
  58.      while (i <= j);
  59.  
  60.      if (left < j)  qs(item,left,j);
  61.      if (i < right) qs(item,i,right);
  62.      }
  63.