概述
$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 - 中文开源技术交流社区...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复