private static int Partition(int[][] array, int left, int right, IJaggedComparer comparer) { int[] pivot = array[left]; while (true) { while (comparer.Compare(array[left], pivot) < 0) { left++; } while (comparer.Compare(array[right], pivot) > 0) { right--; } if (left < right) { Swap(ref array[left], ref array[right]); } else { return(right); } } }
private static void QuickSort(int[][] array, int left, int right, IJaggedComparer comparer) { if (array == null || array.Length <= 1) { return; } if (left < right) { int pivot = Partition(array, left, right, comparer); if (pivot > 1) { QuickSort(array, left, pivot - 1, comparer); } if (pivot + 1 < right) { QuickSort(array, pivot + 1, right, comparer); } } }
public static void DoSort(int[][] array, IJaggedComparer comparer) { QuickSort(array, 0, array.Length - 1, comparer); }
private static int Partition(int[][] array, int left, int right, IJaggedComparer comparer) { int[] pivot = array[left]; while (true) { while (comparer.Compare(array[left], pivot) < 0) left++; while (comparer.Compare(array[right], pivot) > 0) right--; if (left < right) { Swap(ref array[left], ref array[right]); } else { return right; } } }
private static void QuickSort(int[][] array, int left, int right, IJaggedComparer comparer) { if (array == null || array.Length <= 1) return; if (left < right) { int pivot = Partition(array, left, right, comparer); if (pivot > 1) QuickSort(array, left, pivot - 1, comparer); if (pivot + 1 < right) QuickSort(array, pivot + 1, right, comparer); } }