import java.util.Arrays;
 
public class QuickSort {
    public static int[] quickSort(int[] arr, int s, int e) {
        if (e - s + 1 <= 1) {
            return arr;
        }
 
        int pivot = arr[e];
        int left = s;       // pointer for left side
 
        // Partition: elements smaller than pivot on left side
        for (int i = s; i < e; i++) {
            if (arr[i] < pivot) {
                int tmp = arr[left];
                arr[left] = arr[i];
                arr[i] = tmp;
                left++;
            }
        }
 
        // Move pivot in-between left & right sides
        arr[e] = arr[left];
        arr[left] = pivot;
 
        // Quick sort left side
        quickSort(arr, s, left - 1);
 
        // Quick sort right side
        quickSort(arr, left + 1, e);
 
        return arr;
    }
}```