All kinds of partition:
public int partition(int[] nums, int start, int end){
int pivot = nums[start];
int left = start, right = end;
while(left < right){
while(left < right && nums[right] >= pivot){
right--;
}
nums[left] = nums[right];
while(left < right && nums[left] <= pivot){
left++;
}
nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}