gpt4 book ai didi

php - 如何对 SplFixedArray 进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:35:46 24 4
gpt4 key购买 nike

有没有办法在 SplFixedArray 类的实例中对整数或字符串进行排序?转换为 PHP 的 array、排序,然后再转换回是唯一的选择吗?

最佳答案

首先,恭喜您找到并使用了 SplFixedArrays!我认为它们是 vanilla PHP 中未充分利用的功能......

您可能已经意识到,它们的性能是无与伦比的(与通常的 PHP 数组相比)- 但这确实有一些折衷,包括缺少对它们进行排序的 PHP 函数(这是一种耻辱)!

实现您自己的冒泡排序是一种相对简单且高效的解决方案。只需遍历,查看每对连续的元素,将最高的放在右边。冲洗并重复,直到阵列被排序:

<?php
$arr = new SplFixedArray(10);
$arr[0] = 2345;
$arr[1] = 314;
$arr[2] = 3666;
$arr[3] = 93;
$arr[4] = 7542;
$arr[5] = 4253;
$arr[6] = 2343;
$arr[7] = 32;
$arr[8] = 6324;
$arr[9] = 1;

$moved = 0;
while ($moved < sizeof($arr) - 1) {
$i = 0;
while ($i < sizeof($arr) - 1 - $moved) {
if ($arr[$i] > $arr[$i + 1]) {
$tmp = $arr[$i + 1];
$arr[$i + 1] = $arr[$i];
$arr[$i] = $tmp;
}
$i++;

var_dump ($arr);
}
$moved++;
}

速度不快,效率不高。为此,您可能会考虑 Quicksort - 在线提供了文档示例,包括位于 wikibooks.org 的示例。 (需要修改以使用 SplFixedArrays)。

说真的,除了回答你的问题之外,我真的觉得强制自己问为什么像 SplFixedArray 这样的东西存在,并强制自己理解“快速调用 array_sort()”背后发生的事情(以及为什么它很快需要很长时间才能运行)使程序员和程序员之间有所不同。我为你的问题鼓掌!

关于php - 如何对 SplFixedArray 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com