import java.util.Scanner;
class QuickSort {
static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high);
return i + 1;
}
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); System.
out.
print("Enter the number of elements (n): "); int n = scanner.nextInt();
int[] arr = new int[n];
System.
out.
println("Enter " + n
+ " integers separated by space or new line:"); for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
scanner.close();
quickSort(arr, 0, n - 1);
System.
out.
print("Sorted Array: "); for (int i = 0; i < n; i++) {
System.
out.
print(arr
[i
] + " "); }
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKICAgY2xhc3MgUXVpY2tTb3J0IHsKCiAgICBzdGF0aWMgdm9pZCBzd2FwKGludFtdIGFyciwgaW50IGksIGludCBqKSB7CiAgICAgICAgaW50IHRlbXAgPSBhcnJbaV07CiAgICAgICAgYXJyW2ldID0gYXJyW2pdOwogICAgICAgIGFycltqXSA9IHRlbXA7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgcGFydGl0aW9uKGludFtdIGFyciwgaW50IGxvdywgaW50IGhpZ2gpIHsKICAgICAgICBpbnQgcGl2b3QgPSBhcnJbaGlnaF07CiAgICAgICAgaW50IGkgPSBsb3cgLSAxOwoKICAgICAgICBmb3IgKGludCBqID0gbG93OyBqIDwgaGlnaDsgaisrKSB7CiAgICAgICAgICAgIGlmIChhcnJbal0gPCBwaXZvdCkgewogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgc3dhcChhcnIsIGksIGopOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBzd2FwKGFyciwgaSArIDEsIGhpZ2gpOwogICAgICAgIHJldHVybiBpICsgMTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgcXVpY2tTb3J0KGludFtdIGFyciwgaW50IGxvdywgaW50IGhpZ2gpIHsKICAgICAgICBpZiAobG93IDwgaGlnaCkgewogICAgICAgICAgICBpbnQgcGkgPSBwYXJ0aXRpb24oYXJyLCBsb3csIGhpZ2gpOwoKICAgICAgICAgICAgcXVpY2tTb3J0KGFyciwgbG93LCBwaSAtIDEpOwogICAgICAgICAgICBxdWlja1NvcnQoYXJyLCBwaSArIDEsIGhpZ2gpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIChuKTogIik7CiAgICAgICAgaW50IG4gPSBzY2FubmVyLm5leHRJbnQoKTsKICAgICAgICAKICAgICAgICBpbnRbXSBhcnIgPSBuZXcgaW50W25dOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGVyICIgKyBuICsgIiBpbnRlZ2VycyBzZXBhcmF0ZWQgYnkgc3BhY2Ugb3IgbmV3IGxpbmU6Iik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgYXJyW2ldID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgfQogICAgICAgIHNjYW5uZXIuY2xvc2UoKTsKCiAgICAgICAgcXVpY2tTb3J0KGFyciwgMCwgbiAtIDEpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJTb3J0ZWQgQXJyYXk6ICIpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoYXJyW2ldICsgIiAiKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICB9Cn0=