void q_sort(int a[], int l, int r)
{
int flag = a[(l + r) / 2];
int ll = l, rr = r;
while (ll<rr)
{
while (flag < a[rr] ) rr--;
while (flag > a[ll] ) ll++;
if (ll <= rr)swap(a[ll], a[rr]), ll++, rr--;
}
if(l<rr)q_sort(a, l, rr);
if(ll<r)q_sort(a, ll, r);
}
void q_sort(int a[], int l, int r)
{
int left = l, right = r;
int pivot = a[left];
if (left >= right)
{
return;
}
while (left < right)
{
while (left < right && a[right] >= pivot)
{
right--;
}
swap(a[right], a[left]);
while (left < right && a[left] <= pivot)
{
left++;
}
swap(a[left], a[right]);
}
q_sort(a, l, right - 1);
q_sort(a, right + 1, r);
}