您的位置:首页 > 编程语言 > PHP开发

快速排序php写法

2012-12-07 17:38 260 查看
<?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