php小算法总结一(数组重排,进制转换,二分查找)
1.两个有序数组组合成一个新的有序数组
<?php $arr1=array(2,5,7,9,12); $arr2=array(3,4,6,8,10,11); function merge_sort($arr1,$arr2){$len1=count($arr1);$len2=count($arr2);$arr=array();$i=$j=0;while($i<$len1&&$j<$len2){if($arr1[$i]<=$arr2[$j]){$arr[]=$arr1[$i++];}else{$arr[]=$arr2[$j++];}}while($i<$len1)$arr[]=$arr1[$i++];while($j<$len2)$arr[]=$arr2[$j++];return $arr; }print_r(merge_sort($arr1,$arr2));
2.十进制转26进制(a-z表示)
function tento26($num){$str='';$chu=floor($num/26);$yu=$num%26;$str.="{".$yu."}";if($chu>26){$str.=tento26($chu);}else{$str.="{".$chu."}";}return $str; }function numtoalph($match){$alp=' abcdefghijklmnopqrstuvwxyz';if($match[1]>=26){return false;}return $alp[$match[1]]; } $str= tento26(300);$str1=strrev(preg_replace_callback('#\{(\d+)\}#','numtoalph',$str)); echo $str1;
3.数组转json
<?php function myjson_encode($arr){$jsonstr='{';foreach($arr as $k=>$v){if(is_array($v)){$jsonstr.='"'.$k.'":'.myjson_encode($v).',';}else{$jsonstr.='"'.$k.'":"'.$v.'",';}}$jsonstr=trim($jsonstr,',');$jsonstr.='}';return $jsonstr; }
4.二分查找
<?php#二分查找function binarySearch(Array $arr, $target) {$low = 0;$high = count($arr) - 1;while($low <= $high) {$mid = floor(($low + $high) / 2);#找到元素if($arr[$mid] == $target) return $mid;#中元素比目标大,查找左部if($arr[$mid] > $target) $high = $mid - 1;#重元素比目标小,查找右部if($arr[$mid] < $target) $low = $mid + 1;}#查找失败return false;}$arr = array(1, 3, 5, 7, 9, 11);$inx = binarySearch($arr, 1);var_dump($inx); ?>
5.钱币转换
<?php error_reporting(0); function cny($ns) {static $cnums=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"), $cnyunits=array("圆","角","分"), $grees=array("拾","佰","仟","万","拾","佰","仟","亿"); list($ns1,$ns2)=explode(".",$ns,2);$ns2=array_filter(array($ns2[1],$ns2[0]));$ret=array_merge($ns2,array(implode("",_cny_map_unit(str_split($ns1),$grees)),"")); $ret=implode("",array_reverse(_cny_map_unit($ret,$cnyunits))); echo $ret;echo "<br>";return str_replace(array_keys($cnums),$cnums,$ret); } function _cny_map_unit($list,$units) { $ul=count($units); $xs=array(); foreach (array_reverse($list) as $x) { $l=count($xs); if ($x!="0" || !($l%4)){$n=($x=='0'?'':$x).($units[($l-1)%$ul]);} else{$n=is_numeric($xs[0][0])?$x:''; }array_unshift($xs,$n);} return $xs; }echo cny(2305.32);
2仟3佰05圆3角2分
贰仟叁佰零伍圆叁角贰分
6.约瑟夫环
<?php function ysf($arr,$current=0,$out=3){$count=count($arr);$num=1;if($count==1){echo $arr[0];}else{while($num++<$out){$current++;$current=$current%$count;}echo $arr[$current]."<br>";array_splice($arr,$current,1);ysf($arr,$current,$out);}} $arr=[1,2,3,4,5,6,7,8,9,10]; ysf($arr,0,4);
转载于:https://www.cnblogs.com/HKUI/p/4338832.html
php小算法总结一(数组重排,进制转换,二分查找)相关推荐
- 微信小程序蓝牙BLE开发——关于进制转换(四)
微信小程序蓝牙BLE开发--进制转换 这段时间开发共享设备,对接蓝牙BLE设备通信协议,过程中用到一些进制转换, 记录下方便使用. 有些参考大神们,感谢分享. 文章目录 微信小程序蓝牙BLE开发--进 ...
- Java数组实现进制转换
进制间转换关系 进制间转换详细介绍 使用&运算的进制转换 十进制转十六进制 变成二进制取最低四位(&15也就是4位都是1)算值,然后再右移4位,再&15得到值,最后将值反过来就 ...
- 从0开始学习C语言————数组、进制转换、函数
数组: 什么是数组: 变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int num1,num2,num3,num4,num5; int arr[5]; 使用:数组名[下标]; ...
- 【ACM算法】-- 数学问题篇 - 进制转换
第一题: 思路: 对于进制转换问题,其实理解了取模运算和 10 进制运算,基本是特别好理解的,在进制转换问题中,只需掌握,m 进制转换为 10 进制,10 进制转换为 n 进制即可,任何进制之间的转换 ...
- LeetCode 483. 最小好进制(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 对于给定的整数 n, 如果 n 的 k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制. 以字符串的形式给出 n, ...
- 计算机二级考试进制转换可以用计算机嘛,2016年计算机二级考试题中有关进制转换和编码问题...
电子计算机能以极高速度进行信息处理和加工,包括数据处理和加工,而且有极大的信息存储能力.数据在计算机中以器件的物理状态表示,采用二进制数字系统,计算机处理所有的字符或符号也要用二进制编码来表示.用二进 ...
- 进制转换2 (清华大学考研机试)
文章目录 题目 AC代码 题目 本题链接:进制转换2 本博客给出本题截图: AC代码 代码解释:其实就是涉及到高精度的进制转换问题,高精度讲解详见:高精度运算,高精度模板见:高精度算法模板,本题和进制 ...
- 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 如何使用Qt开发一个进制转换小工具
本游戏使用Qt5.8开发 这是一款进制转换小工具,比如十二进制的源数据15,如果您选择目标进制7进制的话,那么按下转换按钮,程序会输出[23]:程序的逻辑原理大概如此:首先把输入通过一系列算法转换成b ...
最新文章
- Metro Win8风格的按钮(Filp翻转)
- 前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节
- 局域网内计算机可以互访 无法上互联网,我使用路由器后访问互联网正常,但是网上邻居不能互访,怎么办?...
- C# 学习笔记(15)自己的串口助手----波形显示
- P5081 Tweetuzki爱取球(期望)(线性求逆元)
- 深入理解HashMap(原理,查找,扩容)
- 简单的Oracle触发器使用
- 代码段:js表单提交检测
- 实时计算在贝壳的实践
- [ABAP] Debug心得
- 百度服务器保存信息多久,百度识图会保存图片在服务器上吗?
- mysql查看被锁住的表
- 清理winsxs的小工具
- win10驱动开发16——派遣函数(直接方式读操作)
- oracle中vim设置行号,vim的常用操作
- 【luogu P4218】珠宝商(SAM)(点分治)(根号分治)
- HNUST 1438: 称重
- 事务的隔离级别(附Redis的简述)
- 王道书 P360 T03(计数排序)
- leetcode-374. 猜数字大小刷题笔记(c++)