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));

posted @ 2014-12-01 00:09  Xavier小灰  阅读(141)  评论(0编辑  收藏  举报