public class exper_QuickSort {
public static void main(String[] args) {
int[] arr = {3,4,1,7,2,5,11,8};
int arrEnd = arr.length;
quickSort(arr, 0, arrEnd);
printArray(arr);
}
public static void quickSort(int[] arr, int arrStart, int arrEnd){
int arrLen = arrEnd - arrStart;
if (arrLen < 0){
return;
}
if (arrLen == 0 || arrLen == 1){
return;
}
int pivot = findPivot(arr, arrStart, arrEnd);
int pivotOrdered = partition(arr, arrStart, arrEnd, pivot);
quickSort(arr, arrStart, pivotOrdered);
quickSort(arr,pivotOrdered+1, arrEnd);
}
private static int partition(int[] arr, int arrStart, int arrEnd, int pivot) {
int arrLen = arrEnd - arrStart;
if (arrLen == 1 || pivot < arrStart || pivot >= arrEnd){
return -1;
}
int pivotValue = arr[pivot];
arr[pivot] = arr[arrEnd - 1];
int indexCount = 0;
for (int i = arrStart; i < arrEnd - 1; i++){
if (arr[i] < pivotValue){
int temp = arr[arrStart + indexCount];
arr[arrStart + indexCount] = arr[i];
arr[i] = temp;
indexCount++;
}
}
arr[arrEnd - 1] = arr[arrStart + indexCount];
arr[arrStart + indexCount] = pivotValue;
return arrStart + indexCount;
}
public static int findPivot(int[] arr, int arrStart, int arrEnd){
return arrStart;
}
public static void printArray(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}