PHP排序函数,可对数组进行排序

PHP 1342 0 2013-04-30

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生成静态html实例

下一篇:PHP截取字符串的几种方法,无乱码哦!

讨论数量:0

请先登录再发表讨论。 2024-04-27

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链