void quicksort(int *A, int begin, int end)
{
int pivot;
if(begin < end)
{
pivot = partition(A, begin, end);
quicksort(A, begin, pivot - 1);
quicksort(A, pivot + 1, end);
}
}
int partition(int *A, int left, int right)
{
int stand = A[left];
while(left < right)
{
while(left < right && A[right] >= stand)
{
right --;
}
if(left < right)
{
A[left ++] = A[right];
}
while(left < right && A[left] <= stand)
{
left ++;
}
if(left < right)
{
A[right --] = A[left];
}
}
A[left] = stand;
return left;
}
{
int pivot;
if(begin < end)
{
pivot = partition(A, begin, end);
quicksort(A, begin, pivot - 1);
quicksort(A, pivot + 1, end);
}
}
int partition(int *A, int left, int right)
{
int stand = A[left];
while(left < right)
{
while(left < right && A[right] >= stand)
{
right --;
}
if(left < right)
{
A[left ++] = A[right];
}
while(left < right && A[left] <= stand)
{
left ++;
}
if(left < right)
{
A[right --] = A[left];
}
}
A[left] = stand;
return left;
}