【发布时间】:2010-09-09 03:10:07
【问题描述】:
this answer 中使用的排序名称是什么?我用谷歌搜索了“完美的插入排序”,但没有找到任何东西。这是该答案的代码:
#this is O(n) instead of O(n log n) or worse
sub perfect_insert_sort {
my $h = shift;
my @k;
for my $k (keys %$h) {
$k[$h->{$k}{order}] = $k;
}
return @k;
}
【问题讨论】:
-
这是如何排序的?这只是一个“重新排序”。真正的排序发生在“订单”字段被填满时。
-
@Arkadiy 这是一个排序,因为顺序是单调函数的结果。您不妨说您无法对一组正整数进行排序(这就是它正在做的事情)。它只是桶排序的一个特例(由于数据是如何创建的,我们知道它是顺序的,从 0 开始,没有重复或跳过,因此是完美的前缀)。
-
请通过显示
$h的内容来澄清您的答案。否则,这是对数组应用某种排列的更一般的情况。 -
@MAK 完整代码在链接的答案中。它按键插入哈希的顺序排序。