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)); }