public QuickSort(QuickSortKind kind, IComparer <T> comparer) { m_comparer = comparer ?? throw new ArgumentNullException(nameof(comparer)); m_insertionSort = new Lazy <InsertionSort <T> >(() => new InsertionSort <T>(m_comparer)); switch (kind) { case QuickSortKind.NonRecursive: m_sort = NonRecursive; break; case QuickSortKind.Recursive: m_sort = Recursive; break; case QuickSortKind.ImprovedRecursive: m_sort = ImprovedRecursive; break; default: throw new ArgumentOutOfRangeException(nameof(kind)); } }
public QuickSort(QuickSortKind kind) : this(kind, Comparer <T> .Default) { }