package com.dameng;
import java.util.Arrays;
/**
* 快速排序方法
*
* @author Allen
*/
public class QuickSort {
public static void main(String[] args) {
int[] ints = {11, 66, 22, 0, 55, 22, 0, 32};
quickSort(ints, 0, ints.length - 1);
System.out.println(Arrays.toString(ints));
}
/**
* 排序计算
*
* @param arr 待排序数组
* @param left
* @param right
*/
private static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int partitionIndex = partition(arr, left, right);
quickSort(arr, left, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, right);
}
}
/**
* 数据比较函数
*
* @param arr 待比较数组
* @param left
* @param right
* @return
*/
private static int partition(int[] arr, int left, int right) {
int index = left + 1;
for (int i = index; i <= right; i++) {
if (arr[i] < arr[left]) {
swap(arr, i, index++);
}
}
swap(arr, left, index - 1);
return index - 1;
}
/**
* 数据交换
*
* @param arr 待交换数组
* @param i 目标下标
* @param j 目标下标
*/
private static void swap(int[] arr, int i, int j) {
if (i == j) {
return;
}
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}