就地排序算法的最佳方法

时间:2019-01-11 14:55:16

标签: php algorithm sorting quicksort

我想知道哪种方法最适合编写排序算法,哪种就地排序(不需要额外的空间,也无需对数组进行排序即可复制而无需复制它)。例如插入排序,快速排序等。

到目前为止,我在github上遇到的大多数示例如下:

//...
public function sort(array $array): array
{
    //...

    return $array;
}

这不是用php记录下来的最有效方法吗?我的意思是,它完全失去了所有“就地”好处。每次将数组传递给函数时,它都会复制该数组,然后再次返回复制的数组。

使用会更好吗

//...
public function sort(array &$array): void
{
    //...
}

方法?这样我们就没有任何不必要的复制,并且可以就地进行真正的排序。如果我们检查memory_get_peak_usage()的值,则表明后者(带有参考号&)几乎比第一种方法低两倍。

我知道参考文献在很多情况下并不是真正的“最佳实践”,并且对此不以为然,但是在这里看来它们确实有其应有的地位,不是吗?

0 个答案:

没有答案