适用的一些算法记录

Author Avatar
yyq 2020-10-05 17:56:35
  • 二维码

适用的一些排序算法记录

记录一些常用的算法:

    NO1:冒泡排序

    function maopao($arr){

        $len = count($arr);

        $n = $len - 1;

        for($i = 0; $i < $len; $i++){

            for($j = 0; $j < $n; $j++){

                if($arr[$j] < $arr[$j+1]){

                    $temp = $arr[$j+1];

                    $arr[$j+1] = $arr[$j];

                    $arr[$j] = $temp;

                }

            }

        }

        return $arr;

    }


    NO2:快速排序

    function quicksort($arr){

        if(count($arr) <= 1) return $arr;

        $key = $arr[0];

        $left_arr = array();

        $right_arr = array();

        for($i = 0; $i < count($arr); $i++){

            if($arr[$i] <= $key)

                $left_arr = $arr[$i];

            else

                $right_arr= $arr[$i];

        }


        $left_arr = quicksort($left_arr);

        $right_arr = quicksort($left_arr);

        return array_merge($left_arr, array($key), $right_arr);

    }


    NO3:二分查找

    function bin_find($arr, $low, $high, $k){

        if($low <= $high){

            $mid = intval(($low + $high)/2);

            if($arr[$mid] == $k){

                return $mid;

            }else if($k < $arr[$mid]){

                return bin_find($arr, $low, $mid-1, $k);

            }else{

                return bin_find($arr, $mid+1, $high, $k);

            }

        }

        return -1;

    }


    NO4:顺序查找(数组内查找某个元素)

    function seq_sch($arr, $n, $k){

        //$arr[$n] = $k;

        for($i = 0; $i < $n; $i++){

            if($arr[$i] == $k){

                break;

            }

        }

        if($i < $n){

            return $i;

        }else{

            return -1;

        }

    }

上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语