public static void QuickSort<T>(int sta, int end, List<T> rows, Func<List<T>,int ,int, bool> comp)
{
if (sta > end)
{ return; }
int temp;
//第一次交换
int temp3 = new Random().Next(sta, end);
T x0;
x0 = rows[sta];
rows[sta] = rows[temp3];
rows[temp3] = x0;
temp = sta;
for (int i = sta + 1; i <= end; i++)
{
if (comp(rows,i,sta))
{
//第二次交换
int temp2 = ++temp;
T x;
x = rows[temp2];
rows[temp2] = rows[i];
rows[i] = x;
}
}
//第三次交换
T x2;
x2 = rows[sta];
rows[sta] = rows[temp];
rows[temp] = x2;
QuickSort(sta, temp - 1, rows, comp);
QuickSort(temp + 1, end, rows, comp);
}