/** * Selection Sort * 步骤: * 按从小到大排序:外层循环控制次数,内层循环找到最小的值。 * @author xiongchuan*/ function SelectionSort(array $data){ $dataLen = count($data); $tmp=$k=NULL; for($i=0;$i<$dataLen;$i++){ for($k=$i,$j=$i+1;$j<$dataLen;$j++) { if($data[$k]>$data[$j])$k=$j; } if($k!=$i){ $tmp = $data[$i]; $data[$i] = $data[$k]; $data[$k] = $tmp; } } return $data; } //test data $data = array(1,100,39,55,63,23,44,2,69,3,56,77,88,37,29); echo "time1:".microtime()."n"; echo join(',', $data); echo "n"; echo join(',', SelectionSort($data)); echo "ntime2:".microtime()."n";
结果:
time1:0.47919200 1328001756
1,100,39,55,63,23,44,2,69,3,56,77,88,37,29
1,2,3,23,29,37,39,44,55,56,63,69,77,88,100
time2:0.47929000 1328001756