
public class QuickSort {
	void quicksort(int[] array, int start, int finish){
		if(start >= finish){
			return;
		}
		
		int pivot = array[finish];
		int bound = start;
		
		for(int i = start; i < finish; i++){
			if(array[i] < pivot){
				swap(array, i, bound);
				bound++;
			}
		}
		swap(array, finish, bound);
		quicksort(array, start, bound - 1);
		quicksort(array, bound + 1, finish);
	}
	
	void swap(int[] array, int i, int j){
		int temp = array[i];
		array[i] = array[j];
		array[j] = temp;
	}
	
	public static void main(String[] args) {
		int[] array =  {14, 12, 8, 30, 26, 27, 22, 7, 4};
		QuickSort q = new QuickSort();
		q.quicksort(array, 0, array.length - 1);
		
		for(int i = 0; i < array.length; i++){
			System.out.print(array[i] + " ");
		}
	}
}
