import java.io.*;
public class QuickSortTest
{

    public static void main (String args[])
    {
	new QuickSortTest ();
    }


    public QuickSortTest ()
    {
	String array[] = {"apple", "koala", "house", "abyss", "twirl", "windy", "graze"};
	quicksort (array, 0, array.length - 1);
	for (int i = 0 ; i < array.length ; i++)
	    System.out.println (array [i]);
    }


    public void quicksort (String a[], int lo0, int hi0)
    {
	int lo = lo0;
	int hi = hi0;
	if (lo >= hi)
	{
	    return;
	}
	String mid = a [(lo + hi) / 2];
	while (lo < hi)
	{
	    while (lo < hi && a [lo].compareTo (mid) < 0)
	    {
		lo++;
	    }
	    while (lo < hi && a [hi].compareTo (mid) > 0)
	    {
		hi--;
	    }
	    if (lo < hi)
	    {
		String T = a [lo];
		a [lo] = a [hi];
		a [hi] = T;
	    }
	}
	if (hi < lo)
	{
	    int T = hi;
	    hi = lo;
	    lo = T;
	}
	quicksort (a, lo0, lo);
	quicksort (a, lo == lo0 ? lo + 1:
	lo, hi0);
    }
}
