#include <stdio.h>
     #include <conio.h>
     #include <alloc.h>
     /************************************/
     void quicksort(int* list,int min, int max)
     {
      int *small;
      int *large;
      int i,s=0,l=0,k;
      int pivot,pivotpos;
      if(max <= min)
      return;

      pivot = list[min];
      small=malloc(sizeof(int)*(max-min+1));
      large=malloc(sizeof(int)*(max-min+1));
      for(i = min + 1; i <= max; i++)
      {
       if(list[i] <  pivot)
 small[s++] = list[i];
       else
 large[l++] = list[i];
      }
      k=min;
      for(i = 0; i < s; i++)
       list[k++] = small[i];
      list[k++] = pivot;
      pivotpos = k - 1;
      for(i = 0; i < l; i++)
       list[k++] = large[i];
      free(small);
      free(large);
      quicksort(list,min,pivotpos-1);
      quicksort(list,pivotpos+1,max);
     }
     /************************************/
     void main()
     {
      int list[10];
      int i;
      clrscr();
      printf("\nPlease  enter 10 digits :\n");
      for(i=0;i<10;i++)
      {
       printf("Array[%d]=",i+1);
       scanf("%d\n",&list[i]);
      }
      printf("\nApplying quicksort...\n");

      quicksort(list,0,10);

      for(i=0;i<10;i++)
      {
       printf("%d ",list[i]);
      }
      getch();
     }
/************************************/