2009-12-27

PHP幾個排序法

冒泡排序算法



function bubblesort($arr)
{
$n=count($arr);

for($i=0;$i<$n;$i++) { for($j=$i;$j<=$n-1;$j++) { if($arr[$i]>$arr[$j])
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;


}
}
}
return $arr;

}

//直接插入排序
function insertsort($arr)
{
$n=count($arr);
for($i=1;$i<$n;++$i) { if($arr[$i]<$arr[$i-1]) { $tmp=$arr[$i]; $j=0; for($j=$i-1;$j>=0&&$tmp<$arr[$j];--$j) { $arr[$j+1]=$arr[$j]; } $arr[$j+1]=$tmp; } } return $arr; } 簡單排序算法 function simplesort($arr) { $tmp=0; $t=0; $n=count($arr); for($i=0;$i<$n;++$i) { $t=$i; for($j=$i+1;$j<$n;++$j) { if($arr[$t]>$arr[$j])
{
$t=$j;

}
}
$tmp=$arr[$i];
$arr[$i]=$arr[$t];
$arr[$t]=$tmp;

}
return $arr;
}


快速排序算法

function qsort($array)
{
$n=count($array);
if($n<=1){return $array;}

$key=$array[0];
$l=array();
$r=array();
//分别进行递归排序,然后合成一个数组
for($i=1;$i<$n;$i++)
{
if($array[$i]<=$key)
{
$l[]=$array[$i];
}
else
{
$r[]=$array[$i];
}
}
$l=qsort($l);
$r=qsort($r);
return array_merge($l,array($key),$r);

}

沒有留言: