## 快速排序

void QuickSort<T>(T[] a, int l, int r) where T : IComparable
{
if (l < r)
{
int i = l, j = r;
T pivot = a[i];
while (i < j)
{
while (i < j && a[j].CompareTo(pivot) > 0) j--;
if (i < j) a[i++] = a[j];

while (i < j && a[i].CompareTo(pivot) < 0) i++;
if (i < j) a[j--] = a[i];
}

a[i] = pivot;

QuickSort<T>(a, l, i - 1);
QuickSort<T>(a, i + 1, r);
}
}

## 堆排序

/// <summary>
/// 堆排序
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="a"></param>
/// <param name="size">对大小(节点数)</param>
void HeapSort<T>(T[] a, int size) where T : IComparable
{
/// 初始化堆
for (int i = size / 2 -1; i >= 0; i--)
{
}

for (int i = size - 1; i >= 0; i--)
{
T tmp = a[0];
a[0] = a[i];
a[i] = tmp;

}
}

/// <summary>
/// 调整堆
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="a"></param>
/// <param name="node">调整的节点</param>
/// <param name="size">堆的大小</param>
void AdjustHeap<T>(T[] a, int node, int size) where T : IComparable
{
if (node > size / 2 - 1)
{
return;
}

int lchild = node * 2 + 1;
int rchild = node * 2 + 2;
int max = node;

if (lchild <= size - 1 && a[lchild].CompareTo(a[max]) > 0) max = lchild;
if (rchild <= size - 1 && a[rchild].CompareTo(a[max]) > 0) max = rchild;

if (max != node)
{
T tmp = a[max];
a[max] = a[node];
a[node] = tmp;

/// 调整Max节点
}
}

## C#的list自带Sort方法排序

C#的list自带Sort方法排序。1000万int数据，大约4-5秒

T[] ListSort<T>(List<T> source) where T: IComparable
{
source.Sort((a, b) => a.CompareTo(b));
return source.ToArray();
}

## Linq

Linq。1000万int数据，大约5-6秒

T[] LinqSort<T>(List<T> source)
{
return (from a in source orderby a select a).ToArray();
}

## List自带OrderBy排序

List自带OrderBy排序。1000万int数据，大约5-6秒

T[] ListOrderBy<T>(List<T> source)
{
return source.OrderBy(a => a).ToArray();
}

## 总结

#### C# Sort排序

2016-05-19 23:09:55

#### C#中集合的排序

2011-08-08 17:35:55

#### C# List<T>排序总结

2016-06-19 14:00:11

#### 各种排序算法总结及C#代码实现

2016-11-08 11:00:55

#### C# 中排序函数的总结

2012-07-12 11:08:48

#### C# 排序比较

2016-07-26 22:17:01

#### CSharp 基本知识-数组

2005-10-22 09:46:00

#### C# sort 方法详解及示例

2016-11-07 11:20:15

#### c#中List<>类的Sort()的几种形式

2017-03-26 15:58:14

#### C# List Sort的三种方法

2016-12-01 11:33:07

C#中常见排序方法