原理:利用快速排序对一个集合进行排序,任取集合的一个元素,以这个元素为比较,所有比这个值大的放在右边,小的值放在左边,然后分别对左右区间进行递归排序。
/*
快速排序
*/
public int sortUnit<T>(List<T> list ,int low,int hign) where T : IComparable
{
T k = list[low];
while(low < hign)
{
while (list[hign].CompareTo(k) >= 0 && low < hign)
hign--;
list[low] = list[hign];
while (list[low].CompareTo(k) <= 0 && low < hign)
low++;
list[hign] = list[low];
}
list[low] = k;
return low;
}
public void QuickSort<T>(List<T> list, int low, int hign)where T: IComparable
{
if (low >= hign)
{
Debug.Log("快速排序完成。");
return;
}
int index = sortUnit<T>(list, low, hign);
QuickSort<T>(list, low, index - 1);
QuickSort<T>(list, index + 1, hign);
}