<?php
/**
* 快速排序
*/
class quickSort {
private static $list; //要排序的数据列表
private $size; //数组大小
public function __construct(array $arr){
self::$list = $arr;
$this->size = count(self::$list);
$this->dispatch(0, $this->size-1);
}
public function getResult(){
return self::$list;
}
/**
* 单次排序
* @param $l 最左下标
* @param $r 最右下标
*/
private function sort($l, $r){
$tmp = self::$list[$l];
while($l < $r){
while($l<$r && self::$list[$r]>=$tmp){
$r--;
}
if($l < $r){
self::$list[$l] = self::$list[$r];
$l++;
}
while($l<$r && self::$list[$l]<=$tmp){
$l++;
}
if($l < $r){
self::$list[$r] = self::$list[$l];
$r--;
}
}
//此时$l==$r
self::$list[$l] = $tmp;
return $l;
}
/**
* 递归调用单次排序
*/
private function dispatch($l, $r){
if($l >= $r) return true;
$mid = $this->sort($l, $r);
$this->dispatch($l, $mid-1);
$this->dispatch($mid+1, $r);
}
}
快速排序php写法
最新推荐文章于 2022-01-07 16:48:28 发布