通过不断的定位基准数的位置来实现快速排序 ?php/** * Created by PhpStorm. * User: saint * Date: 15/8/5 * Time: 上午11:49 */class Demo{ public $a = array(3, 6, 9, 2, 4, 7, 1, 5, 8, 0); public function qsort($left, $right)
<?php /** * Created by PhpStorm. * User: saint * Date: 15/8/5 * Time: 上午11:49 */ class Demo { public $a = array(3, 6, 9, 2, 4, 7, 1, 5, 8, 0); public function qsort($left, $right) { if($left > $right) { return; } $i = $left; $j = $right; $standard = $this->a[$left]; while($i != $j) { // 从右向左查找比基准数小的单元 while(($standard <= $this->a[$j]) && ($j > $i)) { $j--; } // 从左到右查找比基准数大的 while(($standard >= $this->a[$i]) && ($j > $i)) { $i++; } $tmp = $this->a[$i]; $this->a[$i] = $this->a[$j]; $this->a[$j] = $tmp; } // 确定基准数的位置 $this->a[$left] = $this->a[$i]; $this->a[$i] = $standard; $this->qsort($left, $i - 1); $this->qsort($i + 1, $right); } // 执行函数 public function main() { $left = 0; $right = count($this->a) - 1; $this->qsort($left, $right); print_r($this->a); } } $demo = new Demo(); $demo->main();来自:http://my.oschina.net/liuke1556/blog/488215