php大量数据计算有什么技巧(PHP各种常见经典算法总结排序、查找、翻转等)
类别:编程学习 浏览量:2100
时间:2021-11-04 19:35:34 php大量数据计算有什么技巧
PHP各种常见经典算法总结排序、查找、翻转等本文实例讲述了PHP各种常见经典算法。分享给大家供大家参考,具体如下:
冒泡排序算法
|
public function test() { $arr = array (43, 54, 62, 21, 66, 32, 78, 36, 76, 39); var_dump( $arr ); echo '<br/>' ; $arr = $this ->bubbleSort( $arr ); var_dump( $arr ); } public function bubbleSort( $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 ; } |
快速排序
|
public function quick_sort( $arr ) { //先判断是否需要继续进行 $length = count ( $arr ); if ( $length <= 1) { return $arr ; } $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 = $this ->quick_sort( $left_array ); $right_array = $this ->quick_sort( $right_array ); //合并左边 标尺 右边 return array_merge ( $left_array , array ( $base_num ), $right_array ); } public function test() { $arr = array (4, 3, 1, 2, 8, 9); var_dump( $arr ); echo '<br/>' ; $arr = $this ->quick_sort( $arr ); var_dump( $arr ); } |
二分查找
|
public function bin_search( $arr , $low , $high , $k ) { if ( $low <= $high ) { $mid = intval (( $low + $high ) / 2); if ( $arr [ $mid ] == $k ) { return $mid ; } else if ( $k < $arr [ $mid ]) { return $this ->bin_search( $arr , $low , $mid - 1, $k ); } else { return $this ->bin_search( $arr , $mid + 1, $high , $k ); } } return -1; } public function test() { $arr = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); var_dump( $arr ); echo '<br/>' ; $arr = $this ->bin_search( $arr , 0, 8, 4); var_dump( $arr ); } |
顺序查找
|
public function seq_search( $arr , $n , $k ) { $array [ $n ] = $k ; for ( $i = 0; $i < $n ; $i ++) { if ( $arr [ $i ] == $k ) { break ; } } if ( $i < $n ) { return $i ; } else { return -1; } } public function test_suanfa() { $arr = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); var_dump( $arr ); echo '<br/>' ; $arr = $this ->seq_search( $arr , 4, 4); var_dump( $arr ); } |
线性表的删除
|
public function delete_array_element( $array , $i ) { $len = count ( $array ); for ( $j = $i ; $j < $len ; $j ++) { if (isset( $array [ $j + 1])) { $array [ $j ] = $array [ $j + 1]; } } array_pop ( $array ); return $array ; } public function test() { $arr = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); var_dump( $arr ); echo '<br/>' ; $arr = $this ->delete_array_element( $arr , 4); var_dump( $arr ); } |
字符串翻转
|
public function strrev ( $str ) { $rev_str = '' ; if ( $str == '' ) { return 0; } for ( $i = ( strlen ( $str ) - 1); $i >= 0; $i --) { $rev_str .= $str [ $i ]; } return $rev_str ; } public function test() { $arr = 'hellow wolrd' ; var_dump( $arr ); echo '<br/>' ; $arr = $this -> strrev ( $arr ); var_dump( $arr ); } |
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_35349114/article/details/89950389
您可能感兴趣
- php100种算法(php实现的生成排列算法示例)
- php常见的数组函数(用php定义一个数组最简单的方法)
- 微信公众号怎么申请支付接口(微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解)
- iis运行php程序(Windows2003+IIS7 Express使用FastCgi运行php)
- php redis应用场景(PHP商品秒杀问题解决方案实例详解mysql与redis)
- php密钥怎么加密(php校验公钥是否可用的实例方法)
- php常见加密方法(PHP实现的AES 128位加密算法示例)
- php的数据类型约束的好处(PHP中的Iterator迭代对象属性详解)
- 深入理解php 变量(不常用但很实用的PHP预定义变量分析)
- php中变量定义规则(php use和include区别总结)
- thinkphp3.2.3 接口开发(ThinkPHP3.2.3框架Memcache缓存使用方法实例总结)
- apache搭建php环境(Windows上安装Apache2、PHP5、MySQL5及与Resin配合实现多系统之整合)
- thinkphp5 api开发(thinkphp5框架前后端分离项目实现分页功能的方法分析)
- php数据库怎么获得表单(php如何把表单内容提交到数据库)
- linux如何安装php7.1.5环境(vmware linux系统安装最新的php7图解)
- phpob函数使用方法(php中isset与empty函数的困惑与用法分析)
- 新晋小花被称女版吴卓羲 将取代滕丽名成为TVB新一代御用女警(新晋小花被称女版吴卓羲)
- 艺人吴卓羲10年警察生涯,演足10年阿Sir,系咩玩法(艺人吴卓羲10年警察生涯)
- 菲律宾潜水(菲律宾潜水价格)
- 泰国人妖(变性手术生殖器要割掉吗)
- 泰国美女(泰国人妖和女性如何区分)
- 泰国旅游业怎么样(泰国的旅游产业)
热门推荐
- apache https配置(Apache httpd 安装module mod_expires、mod_deflate的方法)
- python编写一个聊天机器人(不到20行代码用Python做一个智能聊天机器人)
- js中的this与with关键字
- linux时间同步ubuntu(在Ubuntu中使用NTP实现时间同步)
- 怎么把织梦的dede改掉(织梦dedecms 提示 body has not allow words 问题解决)
- dedecms使用教程(dedecms二级菜单中判断子菜单标签的使用方法)
- docker gitlab 配置(使用Docker构建一个Git镜像使用clone仓库)
- Flash遮盖其它层,z-index无效
- SQL Server Check 约束
- sql server显示当前登录用户命令(SQL Server正确删除Windows认证用户的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9