计算机科学

首页 > 计算机科学

比较排序

2018-08-28 09:41:49     所属分类:排序算法
将未贴标签的砝码用天平将按质量大小进行排序

比较算法英语:Comparison sort)是排序算法的一种,通过一个抽象的内容比较操作(通常是“小于或等于”操作)来确定两个元素中哪个应该放在序列前面。该算法的唯一要求就是操作数满足全序关系:

  • 如果并且那么(传递性)。
  • 对于,要不,要不(完全性)。

对于并且这种情况,都有可能被排在前面。这时输入的顺序就会决定最后的顺序。

比较排序类似于将未贴标签的砝码用天平将按质量大小进行排序,并且除了用天平测量两个砝码的质量之外不能用其他方法。

目录

  • 1 算法特例
  • 2 性能限制和优势
  • 3 排序所需的比较次数
  • 4 参阅
  • 5 注释

算法特例

比较排序包括:

  • 快速排序
  • 堆排序
  • 归并排序
  • 插入排序
  • 选择排序
  • 冒泡排序

非比较排序包括:

  • 基数排序
  • 计数排序
  • 桶排序

性能限制和优势

比较排序有很多性能上的根本限制。在最差情况下,任何一种比较排序至少需要(大O符号)比较操作[1].这是比较操作所获的信息有限所导致的,或者说是全序集的模糊代数结构所导致的。从这个意义上讲,归并排序,堆排序在他们必须比较的次数上是渐进最优的,虽然这忽略了其他的操作。前面提到的三种非比较排序算法通过非比较操作能在完成,这使他们能够回避这个下界(假设元素是定值)。

不过,比较排序在控制比较函数方面有显著优势,因此比较排序能对各种数据类型进行排序,并且可以很好地控制一个序列如何被排序。例如,如果倒置比较函数的输出结果可以让排序结果倒置。或者可以构建一个按字典顺序排序的比较函数,这样排序的结果就是按字典顺序的。

比较排序可以更好地适应复杂顺序,例如浮点数。并且,一旦比较函数完成,任何比较算法都可以不经修改地使用;而非比较排序对数据类型的要求更严格。

这种灵活性和上述比较排序在现代计算机的执行效率一起导致了比较排序被更多地应用在了大多数实际工作中。

排序所需的比较次数

是所需排序的元素个数时,比较排序所需的比较次数按比例增加。

参阅

注释

  1. ^ http://planetmath.org/encyclopedia/LowerBoundForSorting.html

上一篇:奇偶排序
下一篇:Collation
相关推荐