一个小小的快排程序,num:为待排序数组,l:为数组第一个元素的地址,r:为数组最后一个元素的地址。
void quickSort(vector<int> &num, int l, int r) {
if (l >= r) //先检查左右条件
return;
int i = l, j = r, x = num[l];
while (i < j) {
while (i < j && num[j] >= x)//从右向左找到第一个小于x的
j--;
if (i < j)
num[i++] = num[j];//由于num[i]的值已经存在x中,可直接覆盖num[i]的值
while (i < j && num[i] <= x)//从左向右找第一个大于x的数
i++;
if (i < j)
num[j--] = num[i];
}
num[i] = x; //把最开始取出来的x放到i处
quickSort(num, l, i - 1);//以i为中间值,分左右两部分递归调用
quickSort(num, i + 1, r);
}