简单说一下快排的思路,先确定一个目标值x,将原数组分为两部分,左边全都小于等于x,右边的全都大于等于x,然后再用递归重复上述操作,直至排序结束。
void quick_sort(int nums[],int l,int r){
if(l >= r) return;//递归结束条件
int x = nums[l+r >> 1], i = l-1, j = r+1;//定义x和两个指针
while(i < j){
//两个do while 将区间分为两部分
do{
i++;
}while(nums[i]<x);
do{
j--;
}while(nums[j]>x);
if(i < j) swap(nums[i],nums[j]);//两个指针都停下就交换一下值
}
//递归
quick_sort(nums,l,j);
quick_sort(nums,j+1,r);
}
题目尝试leetcode的一道裸题