public class QuickBubbleSorter
{
private int operations = 0;
private int length = 0;
private SortHandle itsSortHandle = null;
public QuickBubbleSorter(SortHandle handle)
{
itsSortHandle = handle;
}
public int sort(Object array)
{
itsSortHandle.setArray(array);
length = itsSortHandle.length();
operations = 0;
if (length <= 1)
return operations;
boolean thisPassInOrder = false;
for (int nextToLast = length-2;
nextToLast >= 0 && !thisPassInOrder; nextToLast--)
{
thisPassInOrder = true; //potenially.
for (int index = 0; index <= nextToLast; index++)
{
if (itsSortHandle.outOfOrder(index))
{
itsSortHandle.swap(index);
thisPassInOrder = false;
}
operations++;
}
}
return operations;
}
}