2.3.5

2.3.5 #

解答 #

官方实现:https://algs4.cs.princeton.edu/23quicksort/Sort2distinct.java.html

算法 gif 动图

代码 #

public class Sort2Distinct : BaseSort
{
    /// <summary>
    /// 对数组 a 进行排序。
    /// </summary>
    /// <typeparam name="T">数组 a 的元素类型。</typeparam>
    /// <param name="a">需要排序的数组。</param>
    public override void Sort<T>(T[] a)
    {
        int lt = 0, gt = a.Length - 1;
        var i = 0;
        while (i <= gt)
        {
            var cmp = a[i].CompareTo(a[lt]);
            if (cmp < 0)
                Exch(a, lt++, i++);
            else if (cmp > 0)
                Exch(a, i, gt--);
            else
                i++;
        }
    }
}

另请参阅 #

Quick 库