快速排序 简洁实现
快排 c++简洁实现
- 代码
void qsort(vector<int>& n,int left,int right){ if(left>=right) return; int l=left-1,r=right+1,base=n[left+(right-left)/2]; while(l<r){ do l++;while(n[l]<base); do r--;while(n[r]>=base); if(l<r) swap(n[l],n[r]); else qsort(n,left,r),qsort(n,r+1,right); } } - 原理
- 参考博文
- 一些补充:
- 为什么要先l,r加减1,再do while而不是直接while,当l,r同时等于base直接while会死循环,所以保证每轮lr推进了来避免
- 可以改成直接while的吗?(待补充)

浙公网安备 33010602011771号