我是靠谱客的博主 爱听歌蜡烛,最近开发中收集的这篇文章主要介绍php分片上传边传边合,PHP的快排 - Kyli的个人页面 - OSCHINA - 中文开源技术交流社区...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

$arr = [];

$len = 100000;

for ($i = 0; $i 

$arr[] = mt_rand(0, $len);

}

function qsort(&$arr, $s, $e)

{

$l = $e - $s; // count within the problem set

$pivot = $s + mt_rand(0, $l);

$smallerCount = 0;

for ($i = $s; $i <= $e; $i++) {

if ($arr[$i] 

$smallerCount++;

}

}

$fPivot = $smallerCount + $s;

// fix pivot position

if ($fPivot !== $pivot) {

swap($arr, $pivot, $fPivot);

}

unset($pivot);

$leastBigger = $fPivot + 1;

for ($i = $s; $i 

if ($arr[$i] 

continue;

}

for ($j = $leastBigger; $j <= $e; $j++) {

if ($arr[$j] 

swap($arr, $j, $i);

$leastBigger = $j + 1;

break;

}

}

}

if ($s 

qsort($arr, $s, $fPivot - 1);

}

if ($e > $fPivot + 1) {

qsort($arr, $fPivot + 1, $e);

}

}

function swap(&$arr, $a, $b)

{

$tmp = $arr[$a];

$arr[$a] = $arr[$b];

$arr[$b] = $tmp;

/**

$arr[$a] ^= $arr[$b];

$arr[$b] ^= $arr[$a];

$arr[$a] ^= $arr[$b];

**/

}

function verify($arr)

{

for ($i = 0, $l = count($arr) - 1; $i 

if ($arr[$i] > $arr[$i + 1]) {

return false;

}

}

return true;

}

$start = microtime(true);

qsort($arr, 0, $len - 1);

assert(true === verify($arr));

echo PHP_VERSION, "n";

echo "sort $len elementsn";

echo "Time consumed: ", microtime(true) - $start, "n";

echo "Mem consumed: ", memory_get_peak_usage(true) / 1024 / 1024, "MBn";

swap里面改用异或的话,PHP7下面,用的时间反而增加了一点点。。。。。

最后

以上就是爱听歌蜡烛为你收集整理的php分片上传边传边合,PHP的快排 - Kyli的个人页面 - OSCHINA - 中文开源技术交流社区...的全部内容,希望文章能够帮你解决php分片上传边传边合,PHP的快排 - Kyli的个人页面 - OSCHINA - 中文开源技术交流社区...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部