【发布时间】:2014-10-01 04:08:12
【问题描述】:
对数组进行排序意味着引入顺序,还是恢复数字序列中固有的顺序?
这是我在网上阅读的一些算法分析材料中提出的一个想法,它让我想知道哪个是真的。我可以想到双方的论点,但有没有比另一个更“正确”的答案?
【问题讨论】:
-
对您阅读的内容有任何参考吗?
-
这完全取决于您用于订购该数组的标准。因此,没有“固有的”数字序列。例如,假设您想根据数组的平方(从最小值到最大值)对数组进行排序,但您有负数。所以
a=[-3 -1 0 1 2 3]你会说它是订购的吗?如果您按照我所说的方式订购:a_sorted=[0 1 -1 2 -2 3](或a=[0 -1 1 -2 2 3]。排序意味着您为元素付出了任何代价,因此您将这些元素放置为单调增加(或减少)的成本。 -
如果
order表示信息量(或熵量的倒数),那么排序实际上是在破坏序数信息 - 因为有序数组可以简化为一个集合(允许重复values) 和排序函数,而未排序的数组必须包含有关每个元素的序数位置的信息.. -
@JaviV 我有两个你写的问题:首先,对于那里的数字 is 一个“固有”顺序,规范/自然(双关语)顺序@987654325 @。其次,将排序顺序解释为“单调增加 w.r.t. 一些成本”不够笼统(它假定了数字的概念,而通常和更基本的定义只是根据顺序 关系)。
-
@delnan 完全同意你的看法。但是,最一般的排序并不总是按照固有的数字排序进行排序。无论如何,我认为你和我说的一样,但更正式:)
标签: algorithm sorting sequence