Algorithm 为什么在选择排序中浪费比较?
我在一本简而言之的书中读到了关于选择排序的算法。书中出现了以下内容: 选择排序是所有排序算法中最慢的。信息技术 重复执行几乎相同的任务,而不学习任何内容 从一次迭代到下一次迭代。选择最大的元素max, 在A中,进行n-1比较,并选择第二大元素 进行n-1比较-没有多大进步许多这样的比较 是浪费的,因为如果一个元素小于秒,它就不能 可能是最大的元素,因此对 计算最大值。 粗体字是什么意思Algorithm 为什么在选择排序中浪费比较?,algorithm,sorting,selection-sort,Algorithm,Sorting,Selection Sort,我在一本简而言之的书中读到了关于选择排序的算法。书中出现了以下内容: 选择排序是所有排序算法中最慢的。信息技术 重复执行几乎相同的任务,而不学习任何内容 从一次迭代到下一次迭代。选择最大的元素max, 在A中,进行n-1比较,并选择第二大元素 进行n-1比较-没有多大进步许多这样的比较 是浪费的,因为如果一个元素小于秒,它就不能 可能是最大的元素,因此对 计算最大值。 粗体字是什么意思 有人能用简单的例子解释吗?考虑3,5,2,4,1 最大的元素是5。第二大元素是4 3小于4,因此它不能大于5,
有人能用简单的例子解释吗?考虑
3,5,2,4,1
最大的元素是5
。第二大元素是4
3
小于4
,因此它不能大于5
,从而检查它是否本质上是一种浪费。你的书的作者似乎喜欢复杂的长句。不要向他学习;已经有足够多的人知道如何迷惑他们的读者
试图使其更易于理解:
当A有n个
元素时,从A中选择最大元素需要进行n-1
比较。不幸的是,排序算法没有重用这些信息
当它再次启动内部循环对其余元素进行排序时,它需要另一个n-2
比较(一个元素已与上一个循环排序到正确的位置)
由于排序在内部循环的每次运行中只移动一个元素,因此大多数比较都会一次又一次地重复,而不会对结果做任何处理——这只是浪费时间
Wikipedia有一个。看看最慢的排序算法。有很多排序算法非常慢,比如bogosort或。选择排序是高效的(原因在引文中提到),而不是最慢选择排序在比较小且交换成本大的较小阵列上非常有用。