
void sort(int *a, int n)
{ 
      void quicksort(int *,int,int);
      quicksort(a,0,n-1);
}/*end sort*/

  void quicksort(int *a, int p, int r)
  {
         int i,j,x,T;
    if (p < r)
    {
        if ((r-p)>8)
       {
           
                     x = *(a + p);
                      i = p-1;
                     j = r+1;
                    for(;;)
                    {
                          do {j = j - 1;} while (*(a + j) > x);
                          do {i = i + 1;} while (*(a + i) < x);
                          if ( i < j )
                          {
                                 T = *(a + i);
                                a[i] = *(a + j);
                                a[j] = T;
                         }
                         else break;
                    }

                  quicksort(a,p,j);
                  quicksort(a,j+1,r);
  
        } 
	else
	{
	  for( i=p+1;i<= r;i++)
	  {
	    T=a[i];
	    j=i-1;
	    while( (i>0) && (a[j]>T))
	    {
	      a[j+1] = a[j];
	      j--;
	    }
	    a[j+1] = T;
	  }
	}/*endif r>4*/
     }/*endif p< r*/
  }/*endqsort*/

     


