void quick_sort(int q[], int l, int r) {
//结束索引大于起始索引
if (l >= r)return;
//中间值可选q[l],q[r],q[(r+l)/2)]
//起始指针
int x = q[l], i = l - 1, j = r + 1;
while (i < j) {
do i++; while (q[i] < x);//从左到右,直到找到一个大于x的数
do j--; while (q[j] > x);//从右到左,直到找到一个小于x的数
//此时q[i]>x>q[j],如果q[i]在x左边,交换
if (i < j)swap(q[i], q[j]);
}
//此时i==j ,递归处理x的左右两段
quick_sort(q, l, i - 1);
quick_sort(q, j+1, r);
}