Exemple #1
0
        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));
            }
        }
Exemple #2
0
 public QuickSort(QuickSortKind kind)
     : this(kind, Comparer <T> .Default)
 {
 }