为什么处理'优化排序'比正常排序花费更少的时间?

时间:2014-02-17 18:53:50

标签: sorting optimization

每个人都知道处理优化的那种时间比正常的那种时间少吗?在知道优化排序花费的时间较少之后,我首先想到的是“什么使得更快”?

1 个答案:

答案 0 :(得分:0)

优化排序运行速度更快的主要原因是它减少了两个元素的比较和/或移动次数。

如果你考虑一个天真的最坏情况的N个项目,你将N个项目中的每个项目与每个N-1个其他项目进行比较,总共有N *(N-1)= N ^ 2-N比较。优化过程的一种可能方法是对较小的列表进行排序 - 比如N / 2。这将需要N / 2 *(N / 2-1)比较,或N ^ 2/4-N / 2。但是,当然,你必须在列表的两半上做到这一点,这将加倍 - 所以N ^ 2/2-N比较。您还需要进行N / 2次额外比较以将两半合并在一起,因此对两个半尺寸列表进行排序并将它们合并在一起的比较总数将为N ^ 2/2-N + N / 2,或者N ^ 2/2-N / 2 - 用于对整个列表进行排序的比较数量的一半。递归地将列表细分为2个项目,只需一次比较即可对其进行排序,可以显着节省比较次数。还有其他分而治之的想法以及利用列表中发现的对称性来帮助优化排序算法的方法,以及在内存中排列数据的不同方式(数组与链接列表与堆与树之间的数据...等等)这导致了不同的优化算法。