zoukankan      html  css  js  c++  java
  • 常用算法PHP版

    下面分享一些最常见的算法,用PHP如何实现。

    1、冒泡排序

    function bubble_sort($arr) {
        $n=count($arr);
        for($i=0;$i<$n-1;$i++){
            for($j=$i+1;$j<$n;$j++) {
                if($arr[$j]<$arr[$i]) {
                    $temp=$arr[$i];
                    $arr[$i]=$arr[$j];
                    $arr[$j]=$temp;
                }
            }
        }
        return $arr;
    }

    2、归并排序

    function Merge(&$arr, $left, $mid, $right) {
        $i = $left;
        $j = $mid + 1;
        $k = 0;
        $temp = array();
        while ($i <= $mid && $j <= $right) {
            if ($arr[$i] <= $arr[$j])
                $temp[$k++] = $arr[$i++];
            else
                $temp[$k++] = $arr[$j++];
        }
        while ($i <= $mid)
            $temp[$k++] = $arr[$i++];
        while ($j <= $right)
            $temp[$k++] = $arr[$j++];
        for ($i = $left, $j = 0; $i <= $right; $i++, $j++)
            $arr[$i] = $temp[$j];
    }
    function MergeSort(&$arr, $left, $right) {
        if ($left < $right) {
            $mid = floor(($left + $right) / 2);
            MergeSort($arr, $left, $mid);
            MergeSort($arr, $mid + 1, $right);
            Merge($arr, $left, $mid, $right);
        }
    }

    3、二分查找-递归

    function bin_search($arr,$low,$high,$value) {
        if($low>$high)
            return false;
        else {
            $mid=floor(($low+$high)/2);
            if($value==$arr[$mid])
                return $mid;
            elseif($value<$arr[$mid])
                return bin_search($arr,$low,$mid-1,$value);
            else
                return bin_search($arr,$mid+1,$high,$value);
        }
    }

    4. 二分查找-非递归

    function bin_search($arr,$low,$high,$value) {
        while($low<=$high) {
            $mid=floor(($low+$high)/2);
            if($value==$arr[$mid])
                return $mid;
            elseif($value<$arr[$mid])
                $high=$mid-1;
            else
                $low=$mid+1;
        }
        return false;
    }

    5、快速排序

    function quick_sort($arr) {
        $n=count($arr);
        if($n<=1)
            return $arr;
        $key=$arr[0];
        $left_arr=array();
        $right_arr=array();
        for($i=1;$i<$n;$i++) {
            if($arr[$i]<=$key)
                $left_arr[]=$arr[$i];
            else
                $right_arr[]=$arr[$i];
        }
        $left_arr=quick_sort($left_arr);
        $right_arr=quick_sort($right_arr);
        return array_merge($left_arr,array($key),$right_arr);
    }

    6、选择排序

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

    7、插入排序

    function insertSort($arr) {
        $n=count($arr);
        for($i=1;$i<$n;$i++) {
            $tmp=$arr[$i];
            $j=$i-1;
            while($arr[$j]>$tmp) {
                $arr[$j+1]=$arr[$j];
                $arr[$j]=$tmp;
                $j--;
                if($j<0)
                    break;
            }
        }
        return $arr;
    }
  • 相关阅读:
    python 练习 10
    python 练习 9
    运算符
    变量类型
    打印更多的变量
    变量和命名
    数字和数字计算
    第一个程序
    python 练习 8
    python 练习 7
  • 原文地址:https://www.cnblogs.com/T8888/p/15205955.html
Copyright © 2011-2022 走看看