php常见的一些基础算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php常见的一些基础算法相关的知识,希望对你有一定的参考价值。

1.冒泡算法

冒泡算法是将一个未排序的序列,从前往后对相邻的两个值依次进行对比和调整,大的值下沉,小的值上冒。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function bsort($arr){
    $len = count($arr);
    for($i=1;$i<$len;$i++){
        for($k=0;$k<$len-$i;$k++){
            if($arr[$k]>$arr[$k+1]){
                $tmp=$arr[$k+1];
                $arr[$k+1]=$arr[$k];
                $arr[$k]=$tmp;
            }
        }
    }
    return $arr;
}

2.选择排序

选择排序是在一组未排序的序列中选出最小的一个数与第一个位置数据交换,在剩下的序列中选出第二小的一个数放在第二个位置,直到倒数第二个数字和倒数第一个数字比较为止。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function selectsort($arr){
    $len = count($arr);
    for($i=0;$i<$len-1;$i++){
        $mixm=$i;
        for($j=$i+1;$j<$len;$j++){
            if($arr[$mixm]>$arr[$j]){
                $mixm = $j;
            }
            if($mixm!=$i){
                $tmp=$arr[$mixm];
                $arr[$mixm]=$arr[$i];
                $arr[$i]=$tmp;
            }
        }
        
    }
    return $arr;
}

3.插入排序

在要排序的一组数组中,假如前面的数已经排序好顺序的,现在要将第n个数插入到已经排序的数组中,使得插入之后任然是有序的排序。如此循环,直到排好为止。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function insertsort($arr){
    $len = count($arr);
    for($i=1;$i<$len;$i++){
        $tmp=$arr[$i];
        for($j=$i-1;$j>=0;$j--){
            if($tmp<$arr[$j]){
                $arr[$j+1]=$arr[$j];
                $arr[$j]=$tmp;
            }else{
                break;
            }
        }
        
    }
    return $arr;
}

4.快速排序

选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排的序列分成两个部分,一部分比基准元素小,另一部分比基准元素大,此时基准元素已经在其排好序列的正确位置,然后使用同样的办法递归的排序划分的两部分。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);
function quicksort($arr){
    $len = count($arr);
    if($len<=1){
        return $arr;
    }
    $base=$arr[0];
    $minArr=array();
    $maxArr=array();
    for($i=1;$i<$len;$i++){
        if($base>$arr[$i]){
            $minArr[]=$arr[$i];
        }else{
            $maxArr[]=$arr[$i];
        }
    }
    $minArr=quicksort($minArr);
    $maxArr=quicksort($maxArr);
    return array_merge($minArr,array($base),$maxArr);
}

 

以上是关于php常见的一些基础算法的主要内容,如果未能解决你的问题,请参考以下文章

PHP面试:程序设计框架基础知识算法与数据结构高并发解决方案类

编程思想与算法

常用编程思想与算法

超级有用的9个PHP代码片段

hadoop的mapreduce常见算法案例有几种

一致性哈希算法PHP测试片段