int midPortition(int * A,int p,int r)
{
int i,j,k;
int mid;
srand(time(0));
i = p + rand()%(r-p+1);
j = p + rand()%(r-p+1);
k = p + rand()%(r-p+1);
if( (A[i] >= A[j] && A[j] >= A[k]) || (A[i]<=A[j] && A[j]<=A[k]))
{
mid = j;
}
else if((A[j] >= A[i] && A[i] >= A[k]) || (A[j]<=A[i] && A[i]<=A[k])
{
mid = i;
}
else
{
mid = k;
}
int temp = A[r];
A[r] = A[i];
A[i]=temp;
return portition(A,p,r);
}