void quicksort(vector<int>& nums,int left,int right){
//judge if illegal
if(left <right) {
//two pointer
int i = left,j=right;
//define base
int base = nums[left];
//一次定位一个元素
while(i<j){
//从后往前找小于base的元素
while(i<j && nums[j] >=base ) j--;
//交换nums[i] 和 nums[j]
if(i<j)nums[i++] = nums[j];
//从前往后找大于base的元素
while(i<j && nums[i] <=base) i++;
//交换nums[j] 和 nums[i]
if(i<j)nums[j--] = nums[i];
}
//loop 结束,i=j ,base 归位;递归判断两个子区间
nums[i] = base;
quicksort(nums,left,i-1);
quicksort(nums,i+1,right);
}
}
};