php 算法

来源:互联网 发布:javascript 创建元素 编辑:程序博客网 时间:2024/06/15 07:58

这里写图片描述

//冒泡排序$a = array(1,34,56,77,23,233);function maopao($arr){    $len = count($arr);    //该循环控制需要冒泡的轮数    for($i = 1;$i<$len;$i++)    {        //该循环用来控制每轮 冒出一个数 需要比较的次数        for($k = 0;$k < $len - $i; $k++)        {            if($arr[$k] > $arr[$k+1])            {                $temp = $arr[$k + 1];                $arr[$k + 1] = $arr[$k];                $arr[$k] = $temp;            }        }    }    return $arr;}var_dump(maopao($a));//选择排序function selectSort($arr) {//双重循环完成,外层控制轮数,内层控制比较次数    $len=count($arr);    for($i=0; $i<$len-1; $i++) {        //先假设最小的值的位置        $p = $i;        for($j=$i+1; $j<$len; $j++) {            //$arr[$p] 是当前已知的最小值            if($arr[$p] > $arr[$j]) {            //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。                $p = $j;            }        }        //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。        if($p != $i) {            $tmp = $arr[$p];            $arr[$p] = $arr[$i];            $arr[$i] = $tmp;        }    }    //返回最终结果    return $arr;}//顺序查找function search($arr,$need){    foreach($arr as $k => $v)    {        if($need == $v)        {            return $k;        }    }    return false;}$a = [1,3,4,5,56,677,];echo search($a,4);$a = [9,4,5,3,53,2];var_dump(selectSort($a));//二分查找$arr = array(2,4,6,8,10,16,26,42,68,110);function bindary_search($arr,$need,$begin=0,$end=null){    if(is_null($end))    {        $end = count($arr)-1;    }    $mid = floor(($begin+$end)/2);    if($arr[$mid] == $need)    {        return $mid;    }    if($arr[$mid]>$need)    {        if($arr[0] > $need)        {            return false;        }        $ret = bindary_search($arr,$need,$begin,$mid-1);    }else{        if($arr[$end]<$need)        {            return false;        }        $ret = bindary_search($arr,$need,$mid+1,$end);    }    return $ret;}echo bindary_search($arr,4);
原创粉丝点击