AcWing 785. 快速排序-Java-非do -while 版
原题链接
简单
作者:
我还未醒
,
2020-10-27 20:48:48
,
所有人可见
,
阅读 340
提供一个好记一点的模板,毕竟Java 里面do - while 平时用的很少
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(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 i=0;i<n;i++)
System.out.print(arr[i]+" ");
}
private static void quickSort(int[] arr, int left, int right) {
if(right < left) return;
int pivot = arr[left];
int l = left, r = right;
while(l < r) {
while(l < r && arr[r] > pivot) r--; // 一定是先判断r ,可以写成 >=
while(l < r && arr[l] <= pivot) l++;
if(l < r) swap(arr, l, r);
}
swap(arr, left, l);
quickSort(arr, left, l-1);
quickSort(arr, l+1, right);
}
private static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}