【问题标题】:Can sorting Algorithms destroy pre-existing element order?排序算法可以破坏预先存在的元素顺序吗?
【发布时间】:2014-01-07 20:38:40
【问题描述】:

我想知道我遇到的一个问题。

我的情况如下:

我有一组数据和 2 个比较器。 您可以假设第一个比较器按字母顺序对项目进行排序,另一个比较器根据其他一些标准(例如自定义级别值)对项目进行排序。

所以给出以下数据:

1: b / lvl 1
2: c / lvl 1
3: a / lvl 1
4: d / lvl 2

第一次排序后应该是这样的:

a, b, c, d

在第二个之后:

d, a, b, c

到目前为止一切顺利。 我知道有可能破坏第一次排序(例如使用 Bogosort)。 所以这可能是第二类的输出:

d, b, c, a

但是是否有任何“适当的”排序算法也可以做到这一点?

【问题讨论】:

  • 不清楚你在问什么,但似乎与稳定排序有关。

标签: algorithm sorting


【解决方案1】:

你说的是stability:

在对某些类型的数据进行排序时,在确定排序顺序时只检查部分数据。例如,在右侧的卡片排序示例中,卡片按其等级排序,而它们的花色被忽略。结果是原始列表可能有多个不同的正确排序版本。稳定排序算法根据以下规则选择其中之一:如果两个项目比较相等,例如两张 5 卡,那么它们的相对顺序将被保留,因此如果输入中一个在另一个之前,它也会在输出中排在另一个之前。

许多算法是稳定的,而另一些则不是。

两个相当知名的例子——(典型)quick-sort 不稳定,merge-sort 稳定。

请参阅Wikipedia 了解排序算法的长列表,包括它们是否稳定。

【讨论】:

  • 谢谢,我在谷歌上搜索它几乎失败了。不知道要搜索什么。 :)
猜你喜欢
  • 1970-01-01
  • 2011-09-04
  • 2016-01-18
  • 2017-03-22
  • 2011-03-03
  • 2012-05-17
  • 1970-01-01
  • 2012-06-20
  • 2011-05-24
相关资源
最近更新 更多