void Quicksort(ElementType A[],int left,int right)
{
if(cutoff<=right-left)
{
int Pivot = Median3(A, left, right);
i = left;
j = right - 1;
for (;;)
{
while(A[++i]<Pivot){}
while(A[--j]>Pivot){}
if(i<j)
{
Swap(&A[i], &A[j]);
}
else
{
break;
}
}
Swap(&A[i], &A[right - 1]);
Quicksort(A, left, i - 1);
Quicksort(A, i + 1, right);
}
else
{
insertion_sort(A + left, right - left);
}
}