<?php
function partition(&$arr, $left, $right)
{
$pivot = $arr[($left + $right)/2];
while ($left <= $right)
{
while ($arr[$left] < $pivot)
$left++;
while ($arr[$right] > $pivot)
$right--;
if ($left <= $right) {
$tmp = $arr[$left];
$arr[$left] = $arr[$right];
$arr[$right] = $tmp;
$left++;
$right--;
}
}
return $left;
}
function quickSort($arr, $left = 0, $right = null)
{
if(!$right) $right = (count($arr)-1);
$index = partition($arr, $left, $right);
if ($left < $index - 1) {
$arr = quickSort($arr, $left, $index - 1);
}
if ($index < $right) {
$arr = quickSort($arr, $index, $right);
}
return $arr;
}
$sortMe = [8,11,10,13,4,12,56,9];
print_r(quickSort($sortMe));
preferences:
57.8 ms | 402 KiB | 5 Q