HackerRank solutions – Quicksort 1 – Partition – Java Solution

This is a Java based solution to a divide-and-conquer algorithm called Quicksort (also known as Partition Sort). This challenge is a modified version of the algorithm that only addresses partitioning. It is implemented as follows:

import java.util.Scanner;
public class Quicksort1_Partition {

	public static void partition(int[] a, int lo, int hi) {
		int i = lo;
		int j = hi + 1;
		while (hi > lo) {
			while (a[++i] < a[lo])
				if (i == hi)
					break;
			while (a[--j] > a[lo])
				if (j == lo)
					break;
			if (i >= j)
				break;
			swap(a, i, j);

		}
		swap(a, lo, j);
		printSortedArray(a);
	}

	private static void swap(int array[], int i, int j) {
		int tmp = array[j];
		array[j] = array[i];
		array[i] = tmp;
	}

	public static void printSortedArray(int a[]) {
		for (int i = 0; i < a.length; i++)
			System.out.print(a[i] + " ");
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for (int i = 0; i < n; i++) {
			a[i] = sc.nextInt();
		}
		partition(a, 0, a.length - 1);
		sc.close();

	}
}