php常用算法

这篇具有很好参考价值的文章主要介绍了php常用算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper,虽然很少接触到算法方面的东西 。但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要掌握的。

 

冒泡排序算法

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,依次比较两个元素,如果他们的顺序错误就把他们交换过来。

/**
 * @param $arr
 * @return mixed
 *
 * 冒泡排序算法的原理如下(效率比较低):
 * 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
 * 2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
 * 3.针对所有的元素重复以上的步骤,除了最后一个。
 * 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
 */
   function bubble($arr)
   {
        if (!is_array($arr)) {
            return '参数必须是一个一维数组';
        }
        $len = count($arr);

        //获取 长度
        $len = count($arr);
        //循环比较(相邻的两个元素,比较,交换)
        for ($k = 0; $k <= $len; $k++) {
            for ($j = $len - 1; $j > $k; $j--) {
                //比较
                if ($arr[$j] < $arr[$j - 1]) {
                    //交换
                    $temp = $arr[$j];
                    $arr[$j] = $arr[$j - 1];
                    $arr[$j - 1] = $temp;
                }
            }
        }
        return $arr;
    }
 
// 先定义一个数组
$arr = ['9', '2', '4', '1', '7', '3', '5', '8'];
$fun = bubble($arr);
var_dump($fun);

插入排序算法

php常用算法,PHP,笔记,算法,php

插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在一排序序列中从后向前扫描,找到相应的位置并插入。

 /**
 * @param $arr
 * @return mixed
 *
 * 插入排序算法的原理如下:
 * 1.从第一个元素开始,该元素可以认为已经被排序。
 * 2.取出下一个元素,在已经排序的元素序列中从后向前扫描。
 * 3.如果该元素(已排序)大于新元素,将该元素移到下一个位置。
 * 4.重复步骤 ③,直到找打已排序的元素小于或者等于新元素的位置。
 * 5.将新元素插入到该位置中。
 * 6.重复步骤2
 */
function insert_sort($arr){
 
    $len=count($arr);
 
    for($i=1; $i<$len; $i++) {
 
        //获得当前需要比较的元素值。
        $tmp = $arr[$i];
 
        //内层循环控制 比较 并 插入
        for($j=$i-1; $j>=0; $j--) {
 
            //$arr[$i];//需要插入的元素; $arr[$j];//需要比较的元素
            if($tmp < $arr[$j]) {
 
                //发现插入的元素要小,交换位置
                //将后边的元素与前面的元素互换
                $arr[$j+1] = $arr[$j];
 
                //将前面的数设置为 当前需要交换的数
                $arr[$j] = $tmp;
            } else {
                //如果碰到不需要移动的元素
                //由于是已经排序好是数组,则前面的就不需要再次比较了。
                break;
            }
        }
    }
    //将这个元素 插入到已经排序好的序列内。
    //返回
    return $arr;
 
}

$arr=array(1,43,54,62,21,66,32,78,36,76,39);
print_r(insert_sort($arr));

选择排序算法

选择排序是一种简单直观的排序算法。它的工作原理如下:首先是在末排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从 剩余未排序元素中继续寻找最小元素。然后放到排序序列末尾。以此类推,直到所有元素均排序完成。

 /**
 * @param $arr
 * @return mixed
 *
 * 选择排序算法的原理如下(比冒泡效率高):
 * 1.外层决定循环层数
 * 2.选择排序就是默认当前值为最小值,记录下标,然后进行循环比较,记录最小(最大)值的下标,最后交换两者的值。这样第一个值就是最小(最大)值。
 * 3.然后,依次,循环下去。最后得到的就是有序的数组
 */
function select_sort($arr) {
 
    //$i 当前最小值的位置, 需要参与比较的元素
    for($i=0, $len=count($arr); $i<$len-1; $i++) {
 
        //先假设最小的值的位置
        $p = $i;
 
        //$j 当前都需要和哪些元素比较,$i 后边的。
        for($j=$i+1; $j<$len; $j++) {
 
            //$arr[$p] 是 当前已知的最小值
            if($arr[$p] > $arr[$j]) {
 
                //比较,发现更小的,记录下最小值的位置;并且在下次比较时,应该采用已知的最小值进行比较。
                $p = $j;
            }
        }
 
        //已经确定了当前的最小值的位置,保存到$p中。
        //如果发现 最小值的位置与当前假设的位置$i不同,则位置互换即可
        if($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
 
    //返回最终结果
    return $arr;
}


$arr=array(1,43,54,62,21,66,32,78,36,76,39);
print_r(select_sort($arr));
 

快速排序算法

快速排序是由东尼·霍尔发展的一种排序算法。在平均状况下 ,排序n个项目要O(n log n)次比较。文章来源地址https://www.toymoban.com/news/detail-702095.html

/**
 * @param $arr
 * @return array
 *
 * 快速排序算法原理如下:
 *  1.通过设置一个初始中间值,来将需要排序的数组分成3部分:小于中间值的左边,中间值,大于中间值的右边
 *  2.继续递归用相同的方式来排序左边和右边
 *  3.最后合并数组
 */

function quick_sort($arr) {  
    //先判断是否需要继续进行  
    $length = count($arr);  
    if($length <= 1) {  
        return $arr;  
    }  
    //如果没有返回,说明数组内的元素个数 多余1个,需要排序  
    //选择一个标尺  
    //选择第一个元素  
    $base_num = $arr[0];  
    //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内  
    //初始化两个数组  
    $left_array = array();//小于标尺的  
    $right_array = array();//大于标尺的  
    for($i=1; $i<$length; $i++) {  
        if($base_num > $arr[$i]) {  
            //放入左边数组  
            $left_array[] = $arr[$i];  
        } else {  
            //放入右边  
            $right_array[] = $arr[$i];  
        }  
    }  
    //再分别对 左边 和 右边的数组进行相同的排序处理方式  
    //递归调用这个函数,并记录结果  
    $left_array = quick_sort($left_array); 
    $right_array = quick_sort($right_array);  
    //合并左边 标尺 右边  
    return array_merge($left_array, array($base_num), $right_array); 
}
$arr = array(1,98,5,34,23,87,54,23,12,0,456,123,45);
$res = quick_sort($arr);  
print_r($res);die;

到了这里,关于php常用算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • php 常用的接口和函数

    — interface to provide accessing to objects as arrays 提供以数组形式访问对象的接口。 interface synopsis 接口需要实现下面几个方法 basic usage 基础用法 实现访问数组的方式访问接口 the above example will output something similar to : 输出结果 php官网ArrayAccess

    2024年02月05日
    浏览(56)
  • PHP常用六大设计模式

    特点 三私一公 :私有的静态变量(存放实例),私有的构造方法(防止创建实例),私有的克隆方法(防止克隆对象),公有的静态方法(对外界提供实例) 应用场景 程序应用中,涉及到数据库操作时,如果每次操作的时候连接数据库,会带来大量的资源消耗。可以通过单例

    2024年02月09日
    浏览(83)
  • php基础学习之常用系统函数

    用于输出一个或多个字符串   用于输出一个字符串(用句点连接的多个字符串本质是一个字符串),与echo类似,但返回值为1   用于格式化输出字符串,类似于C语言的printf   用于打印关于数组的易于理解的信息,通常用于调试目的,可以设置参数true,设置后print_r将不会直

    2024年02月19日
    浏览(55)
  • php中常用的几个安全函数

    1. mysql_real_escape_string()        这个函数对于在PHP中防止SQL注入攻击很有帮助,它对特殊的字符,像单引号和双引号,加上了“反斜杠”,确保用户的输入在用它去查询以前已经是安全的了。但你要注意你是在连接着数据库的情况下使用这个函数。        但现在mysql_re

    2024年02月02日
    浏览(52)
  • Debian纯净系统安装php常用扩展和程序

    适用于 php-fpm debian容器 mysql扩展 redis扩展 gd扩展 zip扩展 bcmath扩展 opcache扩展 pcntl扩展 mongodb扩展 swoole扩展 sodium扩展 sqlsrv和pdo_sqlsrv扩展 composer工具 git工具 zip工具 vim工具 crontab工具 sudo工具 supervisor工具 查看进程文件的启动位置 配置php 配置php-fpm 重启php-fpm 别名持久化

    2024年02月13日
    浏览(88)
  • 【PHP】函数-作用域&可变函数&匿名函数&闭包&常用系统函数

    函数:function,是一种语法结构,将实现某一个功能的代码块(多行代码)封装到一个结构中,从而实现代码的重复利用(复用)。 定义函数的目的:是为了实现代码的重复利用,一个功能一个函数(简单明了) 函数的使用:通过 函数名() 的方式进行函数访问 注意: 如果函

    2024年02月11日
    浏览(45)
  • 如何学习PHP常用函数和内置库? - 易智编译EaseEditing

    要学习PHP的常用函数和内置库,可以按照以下步骤进行: 学习PHP基础知识: 首先,掌握PHP的基础语法和核心概念。了解变量、数据类型、操作符、控制流程、函数等基本概念和语法规则。   查阅官方文档: PHP官方文档是学习PHP的重要资源,其中包含了所有内置函数和内置库

    2024年02月11日
    浏览(38)
  • PHP学习笔记1

    //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出。 /* 【命名规则】 */ 常量名 类常量建议全大写,单词间用下划线分隔    // MIN_WIDTH 变量名建议用下划线方式分隔            // $var_name 函数名建议用驼峰命名法                // varName 定界

    2024年01月20日
    浏览(41)
  • php笔记1

    php环境 PHP作为一种服务器端脚本语言,可以在各种操作系统上运行。搭建PHP网站的环境,你需要以下几个要素: Web服务器:常见的选择有Apache、Nginx和IIS。你需要安装和配置其中一个服务器软件。 PHP解释器:PHP是一种解释性语言,需要安装PHP解释器来运行PHP代码。你可以从

    2024年02月11日
    浏览(43)
  • PHP 入门学习笔记

    现在如果问什么行业最火,很多人第一反应肯定就是IT。的确,这些年随着互联网的不断发展,IT热门众所周知。那么就一起来说说,IT行业里,哪些技术更热门。 PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。 现在大多数的网站搭建过程中都要使用到PHP。 ph

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包