package quicklySort;
public class QuicklySort {
/**
* 获取枢纽下标
* @param arr
* @param left
* @param right
* @return
*/
private static int getStart(int arr[],int left,int right) {
int temp = arr[left];
while(left<right) {
while(arr[right] >= temp && left < right) {
right--;
}
if(left<right) {
arr[left] = arr[right];
left++;
}
while(arr[left] <= temp && left < right) {
left++;
}
if(left<right) {
arr[right] = arr[left];
right--;
}
}
arr[left] = temp;
return left;
}
/**
* 快速排序
* @param arr
* 待排序数组
* @param left
* 起点
* @param right
* 终点
*/
public static void quickSort(int[] arr,int left,int right) {
if(left < right) {
int s = getStart(arr,left,right);
quickSort(arr, left, s-1);
quickSort(arr, s+1, right);
}
}
/**
* 快速排序
* @param arr
* 待排序数组
*/
public static void quickSort(int[] arr) {
int left = 0;
int right = arr.length-1;
if(left < right) {
int s = getStart(arr,left,right);
quickSort(arr, left, s-1);
quickSort(arr, s+1, right);
}
}
}