确定数字列表的顺序(可能没有排序)

时间:2010-05-05 23:07:09

标签: algorithm language-agnostic sorting

我有一个独特的整数数组(例如val[i]),按任意顺序,我想用整数的排序索引填充另一个数组(ord[i])。换句话说,val[ord[i]]按排序顺序增加i

现在,我只用0,...,N填充ord,然后根据值数组对其进行排序,但我想知道自{{1}以来我们是否可以更高效地对它进行排序}没有填充开头。这更像是一个出于好奇的问题;我不太关心必须预先填充列表然后对其进行排序所带来的额外开销(它很小,我使用插入排序)。这可能是一个愚蠢的问题,有明显的答案,但我在网上找不到任何东西。

2 个答案:

答案 0 :(得分:1)

就时间复杂性而言,没有比排序更快的方法。如果有,那么您可以使用它来更快地排序:生成索引,然后使用它们将原始数组重新排序为按排序顺序。这种重新排序会花费线性时间,因此总体而言,您可以使用更快的排序算法,从而产生矛盾。

答案 1 :(得分:0)

插入排序是非常低的c所以在小列表上工作正常(它对于几乎排序的列表也很好)但是你确定你的列表足够小以至于具有更好的最坏情况复杂性的排序不会更好吗?非就地合并或快速排序似乎很适合该法案(对于非常小的列表,快速排序可能会转换为另一种类型作为优化)。

最终要知道哪个更快,你必须分析,大O只告诉你复杂性如何增长n - >无限

相关问题