php – 如何对SplFixedArray进行排序?

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

解决方法:

首先,祝贺找到并使用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()”背后的原因(以及为什么它很快需要很长时间才能完成运行)使程序员和程序员之间的差异.我为你的问题鼓掌!

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...