【问题标题】:How difficult is it to reverse the sort order for different algorithms?反转不同算法的排序顺序有多难?
【发布时间】:2016-04-12 14:38:06
【问题描述】:

给定以下排序算法

  • 插入排序
  • 选择排序
  • 归并排序

升序顺序(从小到大)对元素进行排序。修改每个算法以使它们按降序顺序(从大到小)对元素进行排序有多难?

我听说他们每个人都同样困难,但我想了解为什么会这样。

【问题讨论】:

  • 我无法解释。我只知道那是答案。
  • 为什么将它们全部反转都同样困难我的意思是我无法解释答案
  • 问题是“以下哪种排序算法最难从合并选择和插入中反转排序顺序”
  • 好的,有人明白你的意思了。我已根据该答案重新措辞您的问题。我希望这就是你要问的。如果没有,请随时再次编辑。

标签: sorting mergesort insertion-sort selection-sort


【解决方案1】:

因为它们都是comparison sorts,所以它们都同样微不足道。在这些排序算法的某个时刻,一对元素之间会进行比较操作,例如:

if (a > b) ...

使算法以相反的顺序排序就像将>更改为<一样简单。

比较排序的实现还可以使用单独实现的比较函数,如 Java 的Comparator 接口,这对于使排序实现与任意数据类型一起工作很有用。在这种情况下,您可以通过提供返回相反结果的比较器以相反的顺序进行排序,而无需触及排序算法本身。

对于任何排序,您始终可以选择通过简单地在排序之后 反转数据来实现反向排序,这有点微弱但非常有效。

【讨论】:

  • 天哪,这就是问题所在。那么我会撤回我的近距离投票。
  • 注意 Java Comparator intefarce 不适用于 int 等原始类型,您需要使用 Integer 等对象类型。
猜你喜欢
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
相关资源
最近更新 更多