题目
给你一个整数数组 nums
,请你将该数组升序排列。
解法一
快速排序
代码
public int[] sortArray(int[] nums) {
quickSort(nums, 0, nums.length - 1);
return nums;
}
private void quickSort(int[] nums, int left, int right) {
if (left < right) {
int partition = partition(nums, left, right);
quickSort(nums, left, partition - 1);
quickSort(nums, partition + 1, right);
}
}
private int partition(int[] nums, int p, int q) {
int index = p;
for (int i = p + 1; i <= q; i++) {
if (nums[i] < nums[p]) {
index++;
swap(nums, index, i);
}
}
swap(nums, p, index);
return index;
}
private void swap(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}