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++;
}
}
}