php排序-快速排序-冒泡排序-顺序排序
//快速排序
$arr = array(32,31,56,4,234,46,466,86,5);
function kuaisu($arr){
if(!is_array($arr) || empty($arr)){
return array();
}
//获取数组的长度
$len = count($arr);
//如果数组中只有一个元素,直接返回数组
if($len <= 1){
return $arr;
}
$key[0] = $arr[0];
$left = array();
$right = array();
for($i=1; $i<$len; $i++){
if($arr[$i]<=$key[0]){
$left[]= $arr[$i];
}
else {
$right[] = $arr[$i];
}
}
/* print_r($left);
echo "<br>";
echo $key[0];
echo "<br>";
print_r($right);
echo "----------------<hr>";
*/
$left = kuaisu($left);
//echo "<hr>";
$right = kuaisu($right);
/*
print_r($left);
echo "<br>";
echo $key[0];
echo "<br>";
print_r($right);
echo "<hr>";
*/
return array_merge($left,$key,$right);
}
print_r($arr);
echo "<br>";
echo "<hr>";
print_r(kuaisu($arr));
//冒泡排序
$arr = array(0,1,2,3,4,5,6,7,8,9);
$len = count($arr)-1; //优化
for($i = 0; $i < $len; $i++){
for($j = 0;$j < $len-$i;$j++){
if($arr[$j] < $arr[$j+1]){
$tmp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
print_r($arr);
//顺序排序
function shunxu($arr){
$count = count($arr);
for($i=0;$i<$count-1;$i++){
$p = $i;
for($j=$i+1;$j<$count;$j++){
$p = $arr[$p] < $arr[$j]? $j:$p;
}
if($p != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$p];
$arr[$p] = $tmp;
}
}
return $arr;
}
print_r(shunxu($arr));