public int[] sortArray(int[] nums) {
QuickSort(nums, 0, nums.length - 1);
int result[] = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
result[i] = nums[i];
}
return result;
}
public static void QuickSort(int nums[], int lhs, int rhs) {
if(lhs >= rhs) return;
int mid = Partition(nums, lhs, rhs);
QuickSort(nums, lhs, mid);
QuickSort(nums, mid + 1, rhs);
}
public static void Swap(int[] nums, int lhs, int rhs) {
int temp = nums[lhs];
nums[lhs] = nums[rhs];
nums[rhs] = temp;
}
public static int Partition(int[] nums, int lhs, int rhs) {
int pivot = nums[lhs];
while(lhs < rhs) {
while (lhs < rhs && nums[rhs] >= pivot) rhs--;
Swap(nums, lhs, rhs);
while (lhs < rhs && nums[lhs] <= pivot) lhs++;
Swap(nums, rhs, lhs);
}
nums[lhs] = pivot;
return lhs;
}