快速排序–php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27


//(1)在数据集之中,选择一个元素作为"基准"(pivot)。
//(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
//(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
function (array $items) {
$count = count($items);
if ($count < 2) return $items;

$pivot = $items[0];
unset($items[0]);
$left = array();
$right = array();
foreach ($items as $item) {
if ($item <= $pivot) {
array_push($left, $item);
} else {
array_push($right, $item);
}
}

return array_merge(quickSort($left), array($pivot), quickSort($right));
}

$testItem = array(3, 8, 1, 5, 9, 3, 7, 2, 6, 22, -1, 12313, 444, 55, 3233);
$return = quickSort($testItem);
var_dump($return);