Guardando il quick sort ho provato a fare questo algoritmo ricorsivo di ordinamento
codice:
void sort(int *a, int m, int n)
{
    int i,j;   
    int medio; 

    
     medio=(a[m]+a[n])/2;

     i=m;
     j=n;

     do
    {
      
         while(a[i]<medio)
        {
          i++;
        }

        
        while(a[j]>medio)
        {
          j--;
        }

        
        if(i<j)
        {
          scambia(&a[i],&a[j]);
          i++;
          j--;
        }
    
    
    } while(i<j);  																	
    
  
   if(m<j)
    {
           sort(a,m,j);
    }

    
    if(n>i)
    {
           sort(a,i,n);
    }
}


void scambia(int *a, int *b)
{
	int temp;
   
    temp=*a;
   *a=*b;
   *b=temp;
}