计数排序(Counting sort)的PHP实现
set_time_limit(1); |
//error_reporting(0); |
function out_arr( $arr ) { |
return implode( ', ' , $arr ).' |
'; |
} |
function sort_counting( $arr ) { |
$min = min( $arr ); |
$max = max( $arr ); |
|
$count = array (); |
for ( $i = $min ; $i <= $max ; $i ++ ) { |
$count [ $i ] = 0; |
} |
|
foreach ( $arr as $v ) { |
$count [ $v ] = $count [ $v ]+1; |
} |
|
foreach ( $count as $k => $c ) { |
for ( $i = 0 ; $i < $c ; $i ++ ) { |
$ret [] = $k ; |
} |
} |
|
return $ret ; |
} |
echo '<pre>' ; |
$arr = range(1, 20); |
shuffle( $arr ); |
echo 'ORG : ' .out_arr( $arr ); |
$arr = sort_counting( $arr ); |
echo 'RET : ' .out_arr( $arr ); |
echo '</pre>' ; |