package com.datastructor;
public class FastSorted {
/**
* @param args
* 快速排序
*/
public static void main(String[] args) {
int[] array={23,34,45,56,78,12,16,17};
recQuickSort(0,array.length-1,array);
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
public static void recQuickSort(int left,int right,int [] array){
if(right-left<=0)
return;
else{
int pivot=array[right];
int partition=partitionIt(left,right,pivot,array);
recQuickSort(left,partition-1,array);
recQuickSort(partition+1,right,array);
}
}
private static int partitionIt(int left, int right, int pivot,int[] array) {
int leftPtr=left-1;
int rightPtr=right;
while(true){
while(array[++leftPtr]<pivot){
};
while(rightPtr>0 && array[--rightPtr]>pivot){
};
if(leftPtr>=rightPtr)
break;
else{
swap(leftPtr,rightPtr,array);
}
}
swap(leftPtr,right,array);
return leftPtr;
}
private static void swap(int leftPtr, int rightPtr, int[] array) {
int temp=array[leftPtr];
array[leftPtr]=array[rightPtr];
array[rightPtr]=temp;
}
}
public class FastSorted {
/**
* @param args
* 快速排序
*/
public static void main(String[] args) {
int[] array={23,34,45,56,78,12,16,17};
recQuickSort(0,array.length-1,array);
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
public static void recQuickSort(int left,int right,int [] array){
if(right-left<=0)
return;
else{
int pivot=array[right];
int partition=partitionIt(left,right,pivot,array);
recQuickSort(left,partition-1,array);
recQuickSort(partition+1,right,array);
}
}
private static int partitionIt(int left, int right, int pivot,int[] array) {
int leftPtr=left-1;
int rightPtr=right;
while(true){
while(array[++leftPtr]<pivot){
};
while(rightPtr>0 && array[--rightPtr]>pivot){
};
if(leftPtr>=rightPtr)
break;
else{
swap(leftPtr,rightPtr,array);
}
}
swap(leftPtr,right,array);
return leftPtr;
}
private static void swap(int leftPtr, int rightPtr, int[] array) {
int temp=array[leftPtr];
array[leftPtr]=array[rightPtr];
array[rightPtr]=temp;
}
}