php常用的排序算法

来源:互联网 发布:网络推广的案例 编辑:程序博客网 时间:2024/06/05 12:39

php实现的许多的经典排序算法,这些算法可以经过一些改动用到更多的实际问题中,因为这些经典的算法有非常好的思想和逻辑在里面,这些都是及其值得学习和借鉴的。

当我们学习到了许多好的编程思想和逻辑,就能写出一些高性能的代码,一些复杂逻辑的功能就可以通过很巧妙和简洁的方法来实现。

/** * 使用递归实现字符串翻转 * @param $str 需要翻转的字符串 * return string */header('Content-Type:text/html;charset=utf-8');function reverse_r($str){    if(strlen($str)>0){        reverse_r(substr($str,1));    }    echo substr($str,0,1);    return;}echo "*******递归实现字符串翻转********************<br>";$str ='hello';$new_str = reverse_r($str);echo $new_str.'</br>';/** * 冒牌排序法 * @param array $arr; * return array */function arrSort($arr){    for ($i=0;$i<count($arr)-1;$i++)    {        for ($j=0;$j<count($arr)-1-$i;$j++)//这里减去$i 是因为我们循序结束就已经给一个数拍好了位置 下次循环的时候就不能为他排序了        {            if ($arr[$j]>$arr[$j+1])            {                $temp = $arr[$j];                $arr[$j] = $arr[$j+1];                $arr[$j+1] = $temp;            }        }    }    return $arr;}echo "*******冒泡排序********************<br>";$arr1= array(5,0,6,-2,-100,1);print_r(arrSort($arr1));echo '</br>';echo '</br>';/** * 选择排序法 * @param array $arr * return array */function selectSort($arr){    $temp='';    for ($i=0;$i<count($arr)-1;$i++)    {        $minVal = $arr[$i];//设置一个默认的最小值        $minIndex = $i;        for ($j=$i+1;$j<count($arr);$j++)        {            if ($minVal>$arr[$j])//如果默认的最小值不是最小值,则改变默认最小值和它对应的下标            {                $minVal = $arr[$j];                $minIndex = $j;            }        }        //循环结束就找到了最小值 交换它的位置        $temp = $arr[$i];        $arr[$i] = $arr[$minIndex];        $arr[$minIndex] = $temp;    }    return $arr;}echo "*******选择排序********************<br>";$arr2 = array(14,3,2,1);print_r(selectSort($arr2));echo '</br>';echo '</br>';/** * 插入排序法 * @param array $arr * return array */function insertSort($arr){    for ($i=1;$i<count($arr);$i++)    {        $insertVal = $arr[$i];//待插入的值        $insertIndex = $i-1;//待比较的值的下标        while ($insertIndex>-1&&$insertVal<$arr[$insertIndex])        {            $arr[$insertIndex+1] = $arr[$insertIndex];            $insertIndex--;        }        $arr[$insertIndex+1] = $insertVal;    }    return $arr;}echo "*******插入排序********************<br>";$arr = array(6,3,9,10,2,0,-100);$new_arr = insertSort($arr);print_r($new_arr);echo '</br>';echo '</br>';echo '</br>';



原创粉丝点击