波斯马BOSSMA Information Technology

排序算法 下的日志

c#通过代理实现泛型列表List排序

发布时间:2010年12月13日 / 分类:DOTNET / 抢沙发

通过在Sort方法中嵌入代理方法,达到按照某个属性进行排序的目的。当然List排序的方法还有很多种,这里不一一列举。 定义要排序的实体类。 public class PersonInfo { public string PNO { get; set; } public string PName { get; set; } public PersonInfo(s...

c#继承接口IComparable实现泛型列表List排序

发布时间:2010年12月13日 / 分类:DOTNET / 抢沙发

通过继承接口IComparable,实现CompareTo方法,达到按照某个属性进行排序的目的。当然List排序的方法还有很多种,这里不一一列举。 定义要排序的实体类,实现接口IComparable的CompareTo方法。 public class PersonInfo : IComparable { public string PNO { get; set; }...

C#实现的各种排序算法

发布时间:2010年9月14日 / 分类:DOTNET / 抢沙发

最近好好学习了一下排序算法,用C#实现了各种排序,并做了简单的性能测试。这篇文章做个索引,并简单的总结一下,以备查询。 1、稳定性 稳定排序:冒泡排序、基数排序、直接插入排序、折半插入排序、归并排序 不稳定排序:选择排序、希尔排序、快速排序、堆排序 2、运行效果 快...

c#排序算法之折半插入排序

发布时间:2010年9月14日 / 分类:DOTNET / 抢沙发

折半插入排序,又称二分插入排序,实际上只是查找,是对插入排序算法的一种改进。 在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所...

C#排序算法之基数排序

发布时间:2010年9月14日 / 分类:DOTNET / 抢沙发

基数排序属于“分配式排序”,基数排序法又称“桶子法”,顾名思义,它是透过键值的部份信息,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序。基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LS...

c#排序算法之归并排序

发布时间:2010年9月14日 / 分类:DOTNET / 抢沙发

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并操作的工作原理如下: 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设...

c#排序算法之堆排序

发布时间:2010年9月14日 / 分类:DOTNET / 抢沙发

堆排序(HeapSort)是一树形选择排序。堆排序的特点是:在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的记录。堆排序的时间,主要由建立初始]堆和反复重建堆这两部分的...

C#排序算法之快速排序

发布时间:2010年9月13日 / 分类:DOTNET / 抢沙发

前边几篇文章介绍了几种排序的算法,并且针对某些算法做了优化。这篇文章介绍一种比较快速的排序算法:快速排序,可以说是冒泡排序的改进。原理是就是找出一个基准数,然后将小于该数的数字放到左边,大于该数的数字放到右边,这样就完成一轮快速排序,然后左边部分和右边部分...

C#排序算法之希尔排序(shellsort)

发布时间:2010年9月10日 / 分类:DOTNET / 抢沙发

希尔排序(shellsort)又叫增量递减(diminishing increment)排序,是对直接插入排序的优化,由D.L. Shell发明,这个算法是通过一个逐渐减小的增量使一个数组逐渐趋近于有序从而达到排序的目的。 希尔排序对数据进行分组,每个分组进行直接插入排序。 增量是每个分组中紧挨着的前...

C#排序算法之鸡尾酒排序

发布时间:2010年9月9日 / 分类:DOTNET / 抢沙发

鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 或者 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。 参照百度百科,整了一个C#版本的,看下边的代码...