php常用算法

来源:互联网 发布:淘宝美工的工作总结 编辑:程序博客网 时间:2024/06/07 05:56

1、插入排序

function insert_sort($arr){    $count = count($arr);    for($i=1; $i<$count; $i++){        $tmp = $arr[$i];        $j = $i - 1;        while($arr[$j] > $tmp){            $arr[$j+1] = $arr[$j];            $arr[$j] = $tmp;        }    }    return $arr;}var_dump(insert_sort(array(34,12,54,44,65)));2、冒泡排序
function bubble_sort($array){    if (empty($array)){        return 'no array data';    }    $count = count($array);    if ($count == 1){        return $array;    }    for ($i=0;$i<$count-1;$i++){        for ($j=$count-1;$j>$i;$j--){            if ($array[$j] > $array[$j-1]){                $temp = $array[$j-1];                $array[$j-1] = $array[$j];                $array[$j] = $temp;            }        }    }    return $array;}$array = array(23,43,12,32,9,76,2,19);var_dump(bubble_sort($array));

3、快速排序
function quickSort($arr){    $len = count($arr);    if($len <= 1) {        return $arr;    }    $key = $arr[0];    $left_arr    = array();    $right_arr    = array();    for($i=1; $i<$len; $i++){        if($arr[$i] <= $key){            $left_arr[] = $arr[$i];        } else {            $right_arr[] = $arr[$i];        }    }    $left_arr    = quickSort($left_arr);    $right_arr    = quickSort($right_arr);    return array_merge($left_arr, array($key), $right_arr);}4、二分算法
/** * @param $arr      用来查找的数组 * @param $val      需要查找的值 * @param $start     起始位置 * @param $end       结束位置 * @return float|int|void  数组中位置 */function twosearch($arr,$val,$start,$end){    if ($start > $end){        echo "can't search";        return;    }    $middle=round(($start+$end)/2);    if($arr[$middle]>$val){        twosearchmethod($arr, $val, $start, $middle-1);    }elseif($arr[$middle]<$val){        twosearchmethod($arr, $val, $middle+1, $end);    }else{        return $middle;    }    return -1;}var_dump( twosearch(array(3,4,5,6,7),5,0,4));



0 0
原创粉丝点击