voidquick_sort(int q[], int l, int r) { if (l >= r) return;//没有数返回
int i = l - 1, j = r + 1, x = q[l + r >> 1]; //看这里就知道左边界使用左指针就死循环了 //同理右边界不能右指针 while (i < j) //i和j相遇跳出 { do i ++ ; while (q[i] < x); do j -- ; while (q[j] > x); if (i < j) swap(q[i], q[j]); } quick_sort(q, l, j), quick_sort(q, j + 1, r); //注意: //这里容易发生死循环(取 l(左边界)时,这里不能用i(左指针);用 r 时,这里不能写 j ); //写quick_sort(q, l, i-1), quick_sort(q, i, r)时,要注意x=q[l+r+1>>1]处理边界问题,或者x=q[r] }