PHP排序函数
输出数组:
$arr=array(12,3,45,6,8,99);
$arr=quicksort($arr); //调用函数
for($i=0;$i<count($arr);$i++){
echo $arr[$i]."/";
}
第一种方法(从小到大排序,一维数组):
function jaesSort($j_arr) {
if (count($j_arr) > 1) {
$k = $j_arr[0];
$x = array();
$y = array();
for ($i=1; $i<count($j_arr); $i++) {
if ($j_arr[$i] <= $k) {
$x[] = $j_arr[$i];
} else {
$y[] = $j_arr[$i];
}
}
$x = jaesSort($x);
$y = jaesSort($y);
return array_merge($x, array($k), $y);
} else {
return $j_arr;
}
}
第二种方法(交换排序,一维数组):
function jaesSort1($j_arr) {
$count=count($j_arr);
for($i=0;$i<$count;$i++){
for($j=$i+1;$j<$count;$j++){
if($j_arr[$i]<=$j_arr[$j]){
$temp=$j_arr[$i];
$j_arr[$i]=$j_arr[$j];
$j_arr[$j]=$temp;
}
}
}
return $j_arr;
}
第三种方法(快速排序,调用方法"quick_sort($arr,0,count($arr))")
function quick_sort(&$anArr, $low, $high)
{
//$low = 0;
//$high = count($anArr);
if($low < $high)
{
$pv = pa_pl(&$anArr, $low, $high);
quick_sort($anArr, $low, $pv - 1);
quick_sort($anArr, $pv + 1, $high);
}
return $anArr;
}
function pa_pl(&$anArr, $i, $j)
{
$tmp_pv = $anArr[$i];
//$i = 0;
//$j = count($anArr) - 1;
while($i < $j)
{
while($i < $j && $anArr[$j] >= $tmp_pv)
{
$j--;
}
if($i < $j)
{
$anArr[$i] = $anArr[$j];
$i = $i + 1;
}
while($i < $j && $anArr[$i] <= $tmp_pv)
{
$i++;
}
if($i < $j)
{
$anArr[$j] = $anArr[$i];
$j = $j - 1;
}
}
$anArr[$i] = $tmp_pv;
return $i;
}
//快速排序完成
上一篇:PHP实现简单的文件上传代码
下一篇:PHP类实现验证码功能
讨论数量:0