void quicksort(vector<int>& numbers, int low, int high)
{
if(low >= high)return;
int middle = partition(numbers, low, high);
quicksort(numbers, low, middle - 1);
quicksort(numbers, middle +1, high);
}
int partition(vector<int>& numbers,int low,int high)
{
int sca = numbers[high];
int n_begin = low;
int n_end = high-1;
while (n_begin < n_end)
{
while (n_begin < n_end &&numbers[n_begin] <= sca)n_begin++;
while (n_begin < n_end &&numbers[n_end] >= sca)n_end--;
swap(numbers[n_begin++], numbers[n_end--]);
}
swap(numbers[high], numbers[n_begin]);
return n_begin;
}