import java.util.Scanner; public class QuickSort { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.print("Enter the number of elements : "); int n = sc.nextInt(); int arr[] = new int[n]; System.out.println("Enter " + n + " elements :"); for (int i = 0; i < n; i++) arr[i] = sc.nextInt(); quickSort(arr, 0, n - 1); System.out.println("\nThe sorted array : ;"); for (int i = 0; i < n; i++) System.out.print(arr[i] + " "); System.out.println(); } /** * @param arr The array/sub-array to be sorted * @param lower lower index * @param upper upper index */ static void quickSort(int arr[], int lower, int upper) { if (lower >= upper) return; int p = partition(arr, lower, upper); quickSort(arr, lower, p - 1); quickSort(arr, p + 1, upper); } /** * @param arr The array of elements * @param lower The lower index of the elements * @param upper The upper index of the elements * @return The index of the pivot element */ private static int partition(int arr[], int lower, int upper) { int pivot = arr[upper]; int j = lower; int tmp; for (int i = lower; i <= upper; i++) { if (arr[i] < pivot) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; j++; } } tmp = arr[upper]; arr[upper] = arr[j]; arr[j] = tmp; return j; } }