扭转不同算法的排序顺序有多难?

时间:2016-01-08 01:33:53

标签: sorting mergesort insertion-sort selection-sort

给出以下排序算法

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

升序顺序排列元素(从最小到最大)。修改每个算法有多困难,以便他们以降序顺序(从大到小)对元素进行排序?

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

1 个答案:

答案 0 :(得分:2)

他们都是平等的,因为他们都是comparison sorts。在那些排序算法的某些点上,将在一对元素之间进行比较操作,例如:

if (a > b) ...

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

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

无论如何,您总是可以通过简单地在排序之后反转数据来实现反向排序,这有点虚弱但非常有效。