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
您可能感兴趣
- thinkphp5框架分析(thinkPHP5框架路由常用知识点汇总)
- php网页浏览功能的具体实现(php实现网页上一页下一页翻页过程详解)
- thinkphp5怎么设置默认返回(thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结)
- phpcurl详解(解决PHP curl或file_get_contents下载图片损坏或无法打开的问题)
- php中三种变量的作用区域(PHP global全局变量经典应用与注意事项分析附$GLOBALS用法对比)
- 本地phpstudy搭建网站教程学习(phpstudy搭建本地网站服务器图文教程)
- dedecms新字段(DEDECMSv5.6 tags.php标签不能按照时间排序的问题)
- php逻辑技巧图解(php版本CKEditor 4和CKFinder安装及配置方法图文教程)
- php try catch能捕获致命错误吗(php异常处理捕获错误整理)
- php读取远程的txt文件(php 根据URL下载远程图片、压缩包、pdf等文件到本地)
- phpredis使用场景(php和redis实现秒杀活动的流程)
- php 5与7有什么改变(php5与php7的区别点总结)
- python微信红包分配(PHP切割整数工具类似微信红包金额分配的思路详解)
- php编程输出菱形(php输出反斜杠的实例方法)
- iis上搭建php环境(vultr服务器windows server 2012 r2搭建IIS8+PHP+MYSQL+phpMyAdmin运行环境图文教程)
- phpstudy创建本地服务器(phpstudy linux小皮面板防火墙的开启与关闭)
- 《白狐的人生》热拍 贾征宇偶像包袱难自弃 图(白狐的人生热拍)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
- 网友抵制 多地取消 夏日祭 为何惹众怒(网友抵制多地取消)
- 兄弟萌,今年的七夕又取消了 思考 思考(今年的七夕又取消了)
- 七夕取消是什么梗(七夕取消是什么梗)
- 这竟然是捏出来的 20种橡皮泥玩法让你轻松hold住魔娃(这竟然是捏出来的)
热门推荐
- asp.net使用swfupload上传
- 小程序数字化怎么布局(用position:sticky完美解决小程序吸顶问题的实现方法)
- mysql查看视图注释(详解MySQL的sql_mode查询与设置)
- sqlserver管理工具远程连接(MSSQLSERVER不同版本设置开启远程连接sa配置)
- packagejson怎么使用(最全的package.json解析)
- docker数据卷挂载和共享目录挂载区别(Docker容器中挂载NFS共享目录的实现)
- jquery中find()与filter()的区别
- HttpWebResponse类的属性和方法
- html+css网页布局实例(网页布局入门教程 如何用CSS进行网页布局)
- php提供哪些函数来避免sql的注入(PHP与SQL语句写一句话木马总结)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9