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