Fast Sorting Algorithm
// Quicksort implementation
Static void quicksort (arraylist szarray, int nlower, int nupper)
{
// Check for non-base case
If (nlower <nupper)
{
// Split and sort partitions
Int nsplit = partition (szarray, nlower, nupper );
Quicksort (szarray, nlower, nsplit-1 );
Quicksort (szarray, nsplit + 1, nupper );
}
}
// Quicksort partition implementation
Static int partition (arraylist szarray, int nlower, int nupper)
{
// Starts with first element
Int nleft = nlower + 1;
String szwer = (string) szarray [nlower];
Int nright = nupper;
// Partition array elements
String szswap;
While (nleft <= nright)
{
// Find item out of place
While (nleft <= nright)
{
If (string) szarray [nleft]). compareto (szeto)> 0)
Break;
Nleft = nleft + 1;
}
While (nleft <= nright)
{
If (string) szarray [nright]). compareto (szeto) <= 0)
Break;
Nright = nright-1;
}
// Swap values if necessary
If (nleft <nright)
{
Szswap = (string) szarray [nleft];
Szarray [nleft] = szarray [nright];
Szarray [nright] = szswap;
Nleft = nleft + 1;
Nright = nright-1;
}
}
// Move another element
Szswap = (string) szarray [nlower];
Szarray [nlower] = szarray [nright];
Szarray [nright] = szswap;
Return nright;
}