Public static void shellsort ()
{
Int H = 1;
While (randomnumbers. length> 3 * H + 1)
{
H = 3 * H + 1;
}
While (h> = 1)
{
For (INT I = 0; I {
// Insert sorting is used internally
For (Int J = I, K = J + H; k <randomnumbers. length; j + = H, K = J + H)
{
If (randomnumbers [J]> randomnumbers [J + H])
{
For (INT k2 = J + H; k2> = H & randomnumbers [K2-H]> randomnumbers [k2]; K2 --)
{
Int temp = randomnumbers [k2];
Randomnumbers [k2] = randomnumbers [K2-H];
Randomnumbers [K2-H] = temp;
}
}
}
}
H = (h-1)/3;
}
}
Public static void quicksort ()
{< br> quicksort (0, randomnumbers. Length-1);
}
Public static void quicksort (INT left, int right)
{
If (left> = right)
{
Return;
}
Else
{
Int partition = partitionit (left, right );
Quicksort (left, partition-1 );
Quicksort (partition + 1, right );
}
}
Public static int partitionit (INT left, int right)
{
Int partition = right;
For (INT I = left; I <right; I ++)
{
If (I> partition & randomnumbers [I] <randomnumbers [partition])
{
Int temp = randomnumbers [partition];
Randomnumbers [partition] = randomnumbers [I];
Randomnumbers [I] = temp;
Temp = partition;
Partition = I;
I = temp;
}
Else if (I <partition & randomnumbers [I]> randomnumbers [partition])
{
Int temp = randomnumbers [partition];
Randomnumbers [partition] = randomnumbers [I];
Randomnumbers [I] = temp;
Partition = I;
}
}
Return partition;
}