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小算法总结一(数组重排,进制转换,二分查找)相关推荐

  1. 微信小程序蓝牙BLE开发——关于进制转换(四)

    微信小程序蓝牙BLE开发--进制转换 这段时间开发共享设备,对接蓝牙BLE设备通信协议,过程中用到一些进制转换, 记录下方便使用. 有些参考大神们,感谢分享. 文章目录 微信小程序蓝牙BLE开发--进 ...

  2. Java数组实现进制转换

    进制间转换关系 进制间转换详细介绍 使用&运算的进制转换 十进制转十六进制 变成二进制取最低四位(&15也就是4位都是1)算值,然后再右移4位,再&15得到值,最后将值反过来就 ...

  3. 从0开始学习C语言————数组、进制转换、函数

    数组: 什么是数组: 变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int num1,num2,num3,num4,num5; int arr[5]; 使用:数组名[下标]; ...

  4. 【ACM算法】-- 数学问题篇 - 进制转换

    第一题: 思路: 对于进制转换问题,其实理解了取模运算和 10 进制运算,基本是特别好理解的,在进制转换问题中,只需掌握,m 进制转换为 10 进制,10 进制转换为 n 进制即可,任何进制之间的转换 ...

  5. LeetCode 483. 最小好进制(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 对于给定的整数 n, 如果 n 的 k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制. 以字符串的形式给出 n, ...

  6. 计算机二级考试进制转换可以用计算机嘛,2016年计算机二级考试题中有关进制转换和编码问题...

    电子计算机能以极高速度进行信息处理和加工,包括数据处理和加工,而且有极大的信息存储能力.数据在计算机中以器件的物理状态表示,采用二进制数字系统,计算机处理所有的字符或符号也要用二进制编码来表示.用二进 ...

  7. 进制转换2 (清华大学考研机试)

    文章目录 题目 AC代码 题目 本题链接:进制转换2 本博客给出本题截图: AC代码 代码解释:其实就是涉及到高精度的进制转换问题,高精度讲解详见:高精度运算,高精度模板见:高精度算法模板,本题和进制 ...

  8. 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  9. 如何使用Qt开发一个进制转换小工具

    本游戏使用Qt5.8开发 这是一款进制转换小工具,比如十二进制的源数据15,如果您选择目标进制7进制的话,那么按下转换按钮,程序会输出[23]:程序的逻辑原理大概如此:首先把输入通过一系列算法转换成b ...

最新文章

  1. Metro Win8风格的按钮(Filp翻转)
  2. 前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节
  3. 局域网内计算机可以互访 无法上互联网,我使用路由器后访问互联网正常,但是网上邻居不能互访,怎么办?...
  4. C# 学习笔记(15)自己的串口助手----波形显示
  5. P5081 Tweetuzki爱取球(期望)(线性求逆元)
  6. 深入理解HashMap(原理,查找,扩容)
  7. 简单的Oracle触发器使用
  8. 代码段:js表单提交检测
  9. 实时计算在贝壳的实践
  10. [ABAP] Debug心得
  11. 百度服务器保存信息多久,百度识图会保存图片在服务器上吗?
  12. mysql查看被锁住的表
  13. 清理winsxs的小工具
  14. win10驱动开发16——派遣函数(直接方式读操作)
  15. oracle中vim设置行号,vim的常用操作
  16. 【luogu P4218】珠宝商(SAM)(点分治)(根号分治)
  17. HNUST 1438: 称重
  18. 事务的隔离级别(附Redis的简述)
  19. 王道书 P360 T03(计数排序)
  20. leetcode-374. 猜数字大小刷题笔记(c++)

热门文章

  1. Pandas入门教程(五)
  2. 2019 第二周 开发笔记
  3. timestamp和recycle同时开启,导致连接成功率降低
  4. 用深度学习来解析梦境中出现的物体
  5. sass import 小记
  6. 2016/03/30
  7. android 打开SD卡文件夹,并获得选中文件的路径怎么实现?
  8. inline函数的作用
  9. 很实用的,GridView中使用DataFormatString属性格式化内容
  10. TODA-MES电池行业解决方案