php算法,冒泡排序

冒泡排序

/***
*从小到大排列
 * 逻辑分析    假设数组 $arr=[a,b,c,d];
 * 总数=4;
 *      比较对象  第几个元素  比较次数
 *       a          1          3
 *       b          2          2
 *       c          3          1
 **/

function ele_sort($arr){
    $length=count($arr);
    if($length<2){
        return $arr;
    }
    for($i=0;$i<$length;$i++){
        for($j=$i+1;$j<$length;$j++){
            if($arr[$i]>$arr[$j]){
                $tmp=$arr[$j];
                $arr[$j]=$arr[$i];
                $arr[$i]=$tmp;
            }
        }

    }
    return $arr;

}

$arr1=[12,42,53,21,76865,86,43,1];
var_dump(ele_sort($arr1));
function bubble_sort($array)

{

$count = count($array);

if ($count <= 0) return false;

for($i=0; $i<$count; $i++){

for($j=$count-1; $j>$i; $j--){

if ($array[$j] < $array[$j-1]){

$tmp = $array[$j];

$array[$j] = $array[$j-1];

$array[$j-1] = $tmp;

}

}

}

return $array;

} 

 极速排序

function quick_sort($array)
{
    if (count($array) <= 1) return $array;
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i = 1; $i < count($array); $i++) {
        if ($array[$i] <= $key)
            $left_arr[] = $array[$i];
        else
            $right_arr[] = $array[$i];
    }
    $left_arr = quick_sort($left_arr);

    $right_arr = quick_sort($right_arr);

    return array_merge($left_arr, array($key), $right_arr);
}
$arr1=[12,123,35,65,98,06,43,21,1,77];
$res=quick_sort($arr1);
var_dump($res);

猜你喜欢

转载自www.cnblogs.com/huay/p/10367422.html