package com.test;
/**
* 快速排序算法
*
* @Package: com.test
* @ClassName: QuickSort
* @author: zq
* @since: 2020/6/6 20:59
* @version: 1.0
* @Copyright: 2020 zq. All rights reserved.
*/
public class QuickSort {
public static void main(String[] args) {
int[] arr = {1, 4, 6, 8, 3};
quickSort(arr, 0, arr.length - 1);
print(arr);
}
private static void quickSort(int[] arr, int left, int right) {
if (right < left) {
return;
}
//为了下面递归做准备
int left0 = left;
int right0 = right;
//算出基准数
int baseNum = arr[left0];
while (left != right) {
//从右边开始找比基准数目小的
while (arr[right] >= baseNum && right > left) {
right--;
}
//从左边开始找比基准数目大的
while (arr[left] <= baseNum && right > left) {
left++;
}
//交换两个值得位置
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
//基准数归位
int temp = arr[left];
arr[left] = arr[left0];
arr[left0] = temp;
quickSort(arr, left0, left - 1);
quickSort(arr, left + 1, right0);
}
private static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}