public static Quicksort ( IComparable elements, int left, int right ) : void | ||
elements | IComparable | |
left | int | |
right | int | |
return | void |
public static void Quicksort(IComparable[] elements, int left, int right)
{
int i = left, j = right;
IComparable pivot = elements[(left + right) / 2];
while (i <= j)
{
while (elements[i].CompareTo(pivot) < 0)
{
i++;
}
while (elements[j].CompareTo(pivot) > 0)
{
j--;
}
if (i <= j)
{
// Swap
IComparable temp = elements[i];
elements[i] = elements[j];
elements[j] = temp;
i++;
j--;
}
}
if (left < j)
{
Quicksort(elements, left, j);
}
if (i < right)
{
Quicksort(elements, i, right);
}
}
}
public void CanSortAllZeros() { int[] testArray = { 0, 0, 0, 0, 0, 0, 0 }; QuickSort.Quicksort(testArray, 0, testArray.Length - 1); int[] resultArray = { 0, 0, 0, 0, 0, 0, 0 }; Assert.Equal(resultArray, QuickSort.Quicksort(testArray, 0, testArray.Length - 1)); }