为什么在选择排序中浪费了比较?

时间:2013-11-07 14:45:32

标签: algorithm sorting selection-sort

我正在阅读 Algorithms Nutshell 一书中的选择排序。书中出现以下内容:

  

选择排序是所有排序算法中最慢的。它   无需学习任何东西即可重复执行几乎相同的任   从一次迭代到下一次。选择最大元素max,   在A中进行n-1次比较,并选择第二大元素   进行n-1次比较 - 进展不大! 其中许多比较   是浪费,因为如果一个元素小于秒,它不能   可能是最大的元素,因此没有影响   计算最大

粗体文字是什么意思?

有人可以用简单的例子来解释吗?

2 个答案:

答案 0 :(得分:1)

你的书的作者似乎喜欢复杂的长句。不要向他学习;已经有足够的人知道如何混淆他们的读者。

试图让它更容易理解:

当A具有n-1元素时,从A中选择最大元素需要进行n比较。不幸的是,排序算法不会重复使用任何此类信息。

当它再次启动内部循环以对其余元素进行排序时,它需要进行另一次n-2比较(一个元素已经使用最后一个循环排序到正确的位置)。

由于排序仅在内循环的每次运行中移动一个元素,因此大多数比较会一遍又一遍地重复,而不会对结果做任何事情 - 它们只是浪费时间。

维基百科有nice animation how selection sort works

答案 1 :(得分:0)

考虑3,5,2,4,1

最大的元素是5。第二大元素是4

3小于4,因此不能大于5,因此检查它是否实际上是浪费。