快速排序
先找一个基值 ,小于基值的放左边 ,大于基值的放右边 递归处理
void q_sort(int l, int r)
{
if (l >= r)return; //只有一个的时候
int x = q[l+r>>1], i = l - 1, j = r + 1;
while (i < j)
{
do i++;while (q[i] < x); // 找到左边第一个小于x的值
do j--;while (q[j] > x); // 找到右边第一个大于x的值
if (i < j)swap(q[i], q[j]); //交换
}
q_sort(l, j); //递归分治处理
q_sort(j + 1, r);//递归分治处理
}