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
您可能感兴趣
- phpstudy中php用什么版本(phpstudy是什么?phpstudy有什么用?)
- php教程字符串类型进阶技术教程(PHP中有关长整数的一些操作教程)
- php支付系统(php实现的支付宝网页支付功能示例基于TP5框架)
- php商城支付接口(php实现银联商务公众号+服务窗支付的示例代码)
- php cgi是什么意思(PHP7内核CGI与FastCGI详解)
- php验证码实现过程(php伪静态验证码不显示的解决方案)
- php微信支付流程(PHP实现微信退款的方法示例)
- php解压压缩包(PHP 实现文件压缩解压操作的方法)
- php中如何打开文件读文件(PHP通过文件保存和更新信息的方法分析)
- thinkphp5 api开发(thinkphp5框架前后端分离项目实现分页功能的方法分析)
- php class使用场景(php反射学习之不用new方法实例化类操作示例)
- php面向对象怎么调用属性(PHP面向对象程序设计__tostring和__invoke用法分析)
- php命名空间真的存在吗(PHP中命名空间的使用例子)
- php收集多个统计数据(PHP实现统计代码行数小工具)
- php日期和时间怎么设置(PHP实现时间日期友好显示实现代码)
- php简单定时执行任务(php实现 master-worker 守护多进程模式的实例代码)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
- 郭麒麟(郭麒麟)
- 古人十句 戒骄 名言,醍醐灌顶,受益匪浅(古人十句戒骄名言)
- 《道德经》:功成不局,泰而不骄(道德经:功成不局)
- 每日一典 过江之鲫(每日一典过江之鲫)
- 红色代表什么(红色代表什么意义和象征)
热门推荐
- mysql在centos7中如何安装(阿里云centos7安装mysql8.0.22的详细教程)
- python端口扫描脚本测试(Python实现的IP端口扫描工具类示例)
- dockerswarm使用教程(Docker Swarm集群管理的使用及原理解析)
- 织梦怎么添加图片(织梦怎么去掉上传图片的水印改为自己设计的水印)
- localstorage底层技术(浅谈Web Storage API的使用)
- 计算机改名后无法连接TFS
- phpstudy中php用什么版本(phpstudy是什么?phpstudy有什么用?)
- apache tomcat安装教程(Apache及Tomcat搭建集群环境过程解析)
- 阿里云服务器攻击了怎么办(云服务器被攻击了补救措施)
- amazonawslinux服务器设置(如何在AWS EC2的Linux服务器上开放一个端口)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9