php常见数组排序算法

 冒泡排序

    function bubbleSort(){
        $arr=array(18,7,3,5,92,4,214,867,369,32,4); 
        $count=count($arr);
        for($i=1;$i<$count;$i++){
            for($j=0;$j<$count-$i;$j++){
                if($arr[$j]<$arr[$j+1]){
                    $temp=$arr[$j];
                    $arr[$j]=$arr[$j+1];
                    $arr[$j+1]=$temp;
                }
            }
        }
        return $arr;
    }

 快速排序

    public function  quickSort($array){
        $count=count($array);
        if($count<=1){
            return $array;
        }
        $base_num=$array[0];
        $left_array=array();
        $right_array=array();
        for($i=1;$i<$count;$i++){
            if($array[$i]>$base_num){
                $left_array[]=$array[$i];
            }else{
                $right_array[]=$array[$i];
            }
        }
        $left_array=quickSort($left_array);
        $right_array=quickSort($right_array);

       return  array_merge($left_array,array($base_num),$right_array);

    }
    
        $array=array(18,7,35,92,421,41,57,3,41,65,1);
        print_r(quickSort($array));

选择排序

function select($arr)
{
    $count = count($arr);
    for ($i = 0; $i < $count - 1; ++$i) {
        $k = $i;
        for ($j = $i + 1; $j < $count; ++$j) {
            if ($arr[$j] < $arr[$k]) {
                $k = $j;
            }
        }
        if ($k != $i) {
            $temp = $arr[$i];
            $arr[$i] = $arr[$k];
            $arr[$k] = $temp;
        }
    }

    return $arr;
}

插入排序

    function  insertSort(){
        $arr=array(18,7,35,92,421,41,57,3,41,65);
        $count=count($arr);
        for($i=1;$i<$count;$i++){
            $temp=$arr[$i];
            for($j=$i-1;$j>=0;$j--){
                if($temp>$arr[$j]){
                    $arr[$j+1]=$arr[$j];
                    $arr[$j]=$temp;
                }
            }
        }
        var_dump($arr);
    }

 桶排序

public function bucketSort(){
        $array=array(18,7,35,92,421,41,57,3,41,65,1);
        for($i=0;$i<=500;$i++){
            $temp_array[$i]=0;
        }
        for($i=0;$i<count($array);$i++){
            $t=$array[$i];
            $temp_array[$t]=$temp_array[$t]+1;
        }
        for($i=0;$i<=500;$i++){
            for($j=1;$j<=$temp_array[$i];$j++){
                echo $i.',';
            }
        }
    }

  二分查找

    function binary_search($array, $item)
    {
        $low = 0;
        $high = count($array)-1;
        while ($low <= $high) {
            $mid = floor(($low + $high)/2);
            $guess = $array[$mid];
            if ($guess == $item) {
                return $mid;
            } else if($guess < $item) {
                $low = $mid + 1;
            } else {
                $high = $mid - 1;
            }
        }
        return '';
    }
$array = [1, 2, 3, 4, 5, 6];
$item = 2;
echo binary_search($array, $item);

 指定概率

二叉树

posted @ 2017-12-29 15:46  za_szybko  阅读(781)  评论(0编辑  收藏  举报