C#几种常用的排序算法
1个回答
展开全部
算法与具体的语言还是有一定区别的。如果单纯的说算法其实与具体的语言是没有相关性的。
排序算法在C#中的实现均出现在集合中,做为一个成员方法出现在集合的类中。一般情况下排序算法都可以看到Sort成员方法。要注意的是Sort算法与ReSort(反序)中,具体的实现要看具体的集合类。
当然,在不同的集合中实现的排序算法也不尽相同。
Array.Sort排序算法在元素小于16个时使用的是冒泡算法(Insertion sort,插入排序法)
当分区数大于2*log^N(N是范围的输入数组),则使用的是Heapsort(堆排序)
否则使用的是QuickSort(快速排序)。
也就是说你在使用Array数据,虽然简单的使用了Sort成员方法,但在不同的场景下用了不同的排序算法。
ArrayList.Sort使用的是的快速排序。
其他的自序序列并没有实现排序算法,如HeadSet(哈希桶)、IDictionary(字典接口及其子类实现)。
扩展方法中使用了OrderBy方法,目前知道是一种稳定排序,估计是一种插入排序(冒泡),文档中并未透露使用的具体方法。因为OrderBy并非对原序列进行排序,而生生成了新的排序序列——执行OrderBy返回另一处序列,而执行的序列的顺序没有任何的改变。文档中只提供说是稳定排序,所以我估计应该是插入排序(冒泡)——逐个比较已存在的元素大小,确定新元素插入的位置。
排序算法在C#中的实现均出现在集合中,做为一个成员方法出现在集合的类中。一般情况下排序算法都可以看到Sort成员方法。要注意的是Sort算法与ReSort(反序)中,具体的实现要看具体的集合类。
当然,在不同的集合中实现的排序算法也不尽相同。
Array.Sort排序算法在元素小于16个时使用的是冒泡算法(Insertion sort,插入排序法)
当分区数大于2*log^N(N是范围的输入数组),则使用的是Heapsort(堆排序)
否则使用的是QuickSort(快速排序)。
也就是说你在使用Array数据,虽然简单的使用了Sort成员方法,但在不同的场景下用了不同的排序算法。
ArrayList.Sort使用的是的快速排序。
其他的自序序列并没有实现排序算法,如HeadSet(哈希桶)、IDictionary(字典接口及其子类实现)。
扩展方法中使用了OrderBy方法,目前知道是一种稳定排序,估计是一种插入排序(冒泡),文档中并未透露使用的具体方法。因为OrderBy并非对原序列进行排序,而生生成了新的排序序列——执行OrderBy返回另一处序列,而执行的序列的顺序没有任何的改变。文档中只提供说是稳定排序,所以我估计应该是插入排序(冒泡)——逐个比较已存在的元素大小,确定新元素插入的位置。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询