排序问题的计算复杂性.doc

排序问题的计算复杂性.doc

排序问题的计算复杂性 对排序算法计算时间的分析可以遵循若干种不同的准则,通常以排序过程所需要的算法步数作为度量,有时也以排序过程中所作的键比较次数作为度量。特别是当作一次键比较需要较长时间,例如,当键是较长的字符串时,常以键比较次数作为排序算法计算时间复杂性的度量。当排序时需要移动记录,且记录都很大时,还应该考虑记录的移动次数。究竟采用哪种度量方法比较合适要根据具体情况而定。在下面的讨论中我们主要考虑用比较的次数作为复杂性的度量。为了对有n个元素的线性表进行排序,至少必须扫描线性表一遍以获取这n个元素的信息,因此排序问题的计算复杂性下界为Ω(n)。 如果我们对输入的数据不做任何要求,我们所能获得的唯一信息就是各个元素的具体的值,我们仅能通过比较来确定输入序列a1,a2,..,an的元素间次序。即给定两个元素ai和aj,通过测试aiaj ,ai≤aj ,ai=aj ,ai≥aj ,aiaj 中的哪一个成立来确定ai和aj间的相对次序。这样的排序算法称为比较排序算法。下面我们讨论一下比较排序算法在最坏情况下至少需要多少次比较,即比较排序算法的最坏情况复杂性下界。 我们假设每次比较只测试ai≤aj ,如果ai≤aj 成立则ai排在aj 前面,否则ai排在aj 后面。任何一个比较排序算法可以描述为一串比较序列: ?(ai,aj),(ak,al),..,(am,an),... 表示我们首先比

文档评论(0)

1亿VIP精品文档

相关文档