![在这里插入图片描述](https://img-blog.csdnimg.cn/8430bc22ae53492f9718ba8c47224b87.png)
代码实现
import java.io.*;
import java.util.*;
public class _785_快速排序 {
public static void main(String[] args) {
Scanner sc = new Scanner(new BufferedInputStream(System.in));
int n = sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++) {
arr[i]=sc.nextInt();
}
quickSort(arr,0,n-1);
for(int a:arr) {
System.out.print(a+" ");
}
}
public static void quickSort(int[] arr,int left,int right) {
if(left>=right) {
return;
}
int x=arr[(left+right)>>1],i=left-1,j=right+1;
while(i<j) {
do {i++;}while(arr[i]<x);
do {j--;}while(arr[j]>x);
if(i<j) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
quickSort(arr,left,j);
quickSort(arr,j+1,right);
}
}
快速排序模板
public static void quickSort(int[] arr,int left,int right) {
if(left>=right) {
return;
}
int x=arr[left],i=left-1,j=right+1;
while(i<j) {
do {i++;}while(arr[i]<x);
do {j--;}while(arr[j]>x);
if(i<j) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
quickSort(arr,left,j);
quickSort(arr,j+1,right);
}
各种排序的时间复杂度和空间复杂度
![在这里插入图片描述](https://img-blog.csdnimg.cn/82cc666d2a994fe7bbe28df52c678ddd.png)