排序数组
给你一个整数数组 nums,请你将该数组升序排列。
示例 1:
输入:nums = [5,2,3,1]
输出:[1,2,3,5]
示例 2:
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
提示:
1 <= nums.length <= 50000
-50000 <= nums[i] <= 50000
思路
1.8大排序都可以搞一遍,快排。
public int[] sortArray(int[] nums) {
quickSort(nums, 0, nums.length - 1);
return nums;
}
public void quickSort(int[] nums, int left, int right) {
if (left < right) {
int division = division(nums, left, right);
quickSort(nums, left, division - 1);
quickSort(nums, division + 1, right);
}
}
public int division(int[] nums, int left, int right) {
int temp = nums[left];
while (left < right) {
while (left < right && nums[right] >= temp) {
right--;
}
nums[left] = nums[right];
while (left < right && nums[left] <= temp) {
left++;
}
nums[right] = nums[left];
}
nums[left] = temp;
return left;
}
2.归并排序。