我正在寻找快速排序 php 中的一些对象。
我正在对一组 OBJECTS 进行排序
$object->x;
$object->y;
$object->z;
我想先按 x 排序,然后是 y,然后是 z。
这是我的快速排序函数,它接受一个作业数组,并按特定的排序键(x、y 或 z 列)排序。该函数返回一个已排序的对象数组,这些对象已按排序键排序。
private function quicksort($objects, $sortKey) {
if(count($objects) < 2) return $objects;
$left = $right = array();
reset($objects);
$pivot_key = key($objects);
$pivot = array_shift($objects);
foreach($objects as $k => $v) {
if($v->$sortKey < $pivot->$sortKey)
$left[$k] = $v;
else
$right[$k] = $v;
}
return array_merge($this->quicksort($left,$sortKey), array($pivot_key => $pivot), $this->quicksort($right,$sortKey));
}
我可以使用快速排序递归算法轻松快速排序任何单个列,但是将它们组合在一起然后将这些子组排序到第 n 次真的让我很头疼。
有没有我可以看的算法?