using System;
using System.Collections.Generic;

namespace Algorithms.Sorters.Comparison
{
    /// <summary>
    ///     Sorts arrays using quicksort (selecting random point as a pivot).
    /// </summary>
    /// <typeparam name="T">Type of array element.</typeparam>
    public sealed class RandomPivotQuickSorter<T> : QuickSorter<T>
    {
        private readonly Random random = new();

        protected override T SelectPivot(T[] array, IComparer<T> comparer, int left, int right) =>
            array[random.Next(left, right + 1)];
    }
}
