/
Debug/
area/
data/
gods/
player/
player/skill/
/*      qsort.c                 John Nelson             2-Dec-1994
 *
 *      Demonstrate the quicksort function
 */
/****************************************************************************
*	Demon's Dance MUD, and source code are property of Eric Goetschalckx	*
*	By compiling this code, you agree to include the following in your		*
*	login screen:															*
*	    Derivative of Demon's Dance, by Enzo/Stan							*
***************************************************************************/
#include <stdio.h>

void quicksort(int arr[], const int lo, const int hi);
void printTable(const int arr[], const int lo, const int hi);


int main_sort(void)
{
   int table[]= {3,14,12,6,10,9,2,18,11,21,5,13};
   int tableSize = sizeof(table)/sizeof(int);
   printf("Quicksort test program\n\n");
   quicksort(table, 0, tableSize-1);

   printTable(table, 0, tableSize-1);

   return 0;
}


/* quicksort                    A recursive quicksort function for integer*/
void quicksort(int arr[], const int lo, const int hi)
{
   int low, high, pivot, temp;
   low = lo;
   high = hi;
   printf("Quicksort Partition:  %2d to %2d\n", lo, hi);
   if (low < high)
     {
     printTable(arr, low, high);
     pivot = arr[high];
     do
       {
       while (low < high && arr[low] <= pivot)
          low++;
       while (high > low && arr[high] >= pivot)
          high--;
       if (low < high)                  /* Elements in wrong partition */
          {
          temp = arr[low];  arr[low] = arr[high];  arr[high] = temp;
          }
       }
     while (low < high);
     temp = arr[low];  arr[low] = arr[hi];  arr[hi] = temp;
     quicksort(arr, lo, low-1);
     quicksort(arr, low+1, hi);
     }
}

/* printTable                                                           */

void printTable(const int arr[], const int lo, const int hi)
{
   int i;
   for(i=lo; i <= hi; i++)
      printf("%3d ", arr[i]);
   putchar('\n');
}