Quick sort
Algorithm
low, high => represents start and end index of array
quickSort(arr[], low, high){
if(low < high){
pi = partition(arr, low, high);
quickSort(arr, low, pi – 1);
quickSort(arr, pi + 1, high);
}
}
Code
package sorting; import java.util.Arrays; /** * low, high => represents start and end index of array * quickSort(arr[], low, high){ * if(low < high){ * pi = partition(arr, low, high); * quickSort(arr, low, pi - 1); * quickSort(arr, pi + 1, high); * } * } * * { 5, 4, 3, 2, 1, 6, 7} * / \ * {4, 3, 2, 1} {6, 7} * / \ / \ * {3, 2, 1} { } { } {7} * / \ * {2, 1} { } * / \ * {1} { } */ public class QuickSort { public static void main(String[] args) { int[] arr = new int[]{5,4,3,2,1, 23,1, 23}; quickSort(arr, 0, arr.length - 1); System.out.println(Arrays.toString(arr)); } static void quickSort(int[] arr, int low, int high){ if(low < high) { int pivot = partition(arr, low, high); quickSort(arr, low, pivot - 1); quickSort(arr, pivot + 1, high); } } static int partition(int[] arr, int low, int high){ int i = low + 1; int pi = low; while(i < high){ if(arr[i] < arr[low]){ int temp = arr[i]; arr[i] = arr[low]; arr[low] = temp; low++; pi= i; } i++; } int temp = arr[pi]; arr[pi] = arr[low]; arr[low] = temp; return low + 1; } } java