<?php function quickSort(&$array, $left, $right){ if ($left >= $right){ return ; } $pivot = $array[$left]; //选择比较元素 $array[$left] = $array[$right]; $array[$right] = $pivot; //比较元素移至数组末尾 $storeIdx = $left; for ($i = $left; $i < $right; $i++){ //找到比较元素合适的位置 if ($array[$i] < $pivot){//小于比较元素的元素移至数组左边,大于比较元素的元素移至数组右边 $tmp = $array[$storeIdx]; $array[$storeIdx] = $array[$i]; $array[$i] = $tmp; $storeIdx++; } } $tmp = $array[$storeIdx]; $array[$storeIdx] = $pivot; //比较元素插入合适位置 $array[$right] = $tmp; quickSort($array, $left, $storeIdx-1); //比较左边部分 quickSort($array, $storeIdx+1, $right); //比较右边部分 } $arr = array(1,4,2,1,78,100,3,2,900,1,10); quickSort($arr,0,count($arr)-1); var_dump($arr); ?>
Wiki:http://en.wikipedia.org/wiki/Quicksort