912. 排序数组
给你一个整数数组 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
快速排序模版
快排思想图
时间复杂度图
java 代码实现
class Solution {
public int[] sortArray(int[] nums) {
int l = 0,r = nums.length-1;
quickSort(nums,l,r);
return nums;
}
public static void quickSort(int[] a,int l,int r){
if(l>=r) return;
int i = l - 1;
int j = r + 1;
int x = a[(l + r)>> 1];
while(i < j){
//对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do{i++;} while(a[i]<x);
do{j--;} while(a[j]>x);
if(i < j){
swap(a,i,j);
}
}
quickSort(a,l,j);
quickSort(a,j + 1,r);
}
public static void swap(int[] a,int l,int r){
int t = a[l];
a[l] = a[r];
a[r] = t;
}
}