import java.util.Scanner;
public class QuickSort {
static int arr[];
public void sort(int left, int right) {
if(left>right) return;
int i = left, j = right, temp;
while(i<j) {
while(j>i && arr[j]>=arr[left]) {
j --;
}
while(i<j && arr[i]<=arr[left]) {
i ++;
}
if(i<j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[left];
arr[left] = arr[j];
arr[j] = temp;
sort(left, j-1);
sort(j+1, right);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("需要输入的数的个数: ");
int n = sc.nextInt();
arr = new int[n];
for(int i=0; i<n; i++) {
arr[i] = sc.nextInt();
}
QuickSort qs = new QuickSort();
qs.sort(0, arr.length-1);
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
思想:每一次都都在数组中找一个基准数,每一轮都把基准数归位(找到基准数应该存在的位置)。
时间复杂度
最坏情况:O(N^2)
平均:O(nlogn)