繁体   English   中英

确定排序比较次数的公式?

[英]Formula for determining number of comparisons in a sort?

我很好奇是否有一个公式/规则可以找到在排序算法中完成的比较总数,特别是合并排序,选择排序和插入排序。 我很确定选择排序的规则是n(n-1)/2 ,其中n是要排序的元素数。 我认为插入排序也是如此,但是根据我进行的一次Java测试,显然这是不正确的(根据答案键,插入排序有6个项目的列表进行了14次比较,对选择项进行了15次比较)分类)。 所以现在我很困惑。

通常,由于以下两个原因,没有精确的公式:

  1. 在实现各种排序算法方面有足够的变化空间,以至于同一算法的不同实现之间可能存在很小的差异。

  2. 对于某些算法,比较次数取决于元素及其初始顺序。

当然,没有一个“一刀切”的公式可以涵盖(例如)同一复杂度类中的所有算法。


一个线索:如果排序算法的最佳情况或最坏情况复杂度与其平均复杂度不同,则比较次数或移动次数取决于输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM