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);

php小算法总结一(数组重排,进制转换)的更多相关文章

  1. php小算法总结一(数组重排,进制转换,二分查找)

    1.两个有序数组组合成一个新的有序数组 <?php $arr1=array(2,5,7,9,12); $arr2=array(3,4,6,8,10,11); function merge_sor ...

  2. PAT甲级 进制转换题_C++题解

    进制转换题 PAT (Advanced Level) Practice 进制转换题 目录 <算法笔记> 重点摘要 1015 Reversible Primes (20) 1019 Gene ...

  3. lua之m进制转换为n进制-任意进制转换算法

    够无聊的写这个,为防止需要的人也无聊一遍,写个吧 算法有n种,但是,咱们一种就够用了 --数组倒序排列 local function orderByDesc( input ) local output ...

  4. 结合stack数据结构,实现不同进制转换的算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...

  5. 进制转换( C++字符数组 )

    注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...

  6. [c/c++] programming之路(7)、数据类型转换、偷钱小程序、进制转换

    一.数据类型转换 #include<stdio.h> //某些场合,必须进行数据类型转换,以匹配调用 void main0(){ printf();//printf不管你是什么类型,解析失 ...

  7. C# 进制转换 在什么情况下使用16进制,字节数组,字符串

    C# 进制转换 Admin2013年9月18日 名人名言:从工作里爱了生命,就是通彻了生命最深的秘密.——纪伯伦 1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Con ...

  8. Java实现 蓝桥杯VIP 算法训练 ALGO-16进制转换

    算法训练 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的 ...

  9. Java实现 蓝桥杯VIP 算法提高 进制转换

    算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制 ...

随机推荐

  1. div的contenteditable和placeholder蹦出的火花

    今天在做手机端发布描述内容时,需要实现换行,还需要有plachholder. 在文本框中换行自然想到了textarea. 问题似乎已经解决了,但是当内容发布后,在html中显示换行都丢失了. 这个时候 ...

  2. [kuangbin带你飞]专题十 匹配问题

        A-L 二分匹配 M-O 二分图多重匹配 P-Q 二分图最大权匹配 R-S 一般图匹配带花树 模板请自己找     ID Origin Title   61 / 72 Problem A HD ...

  3. @SessionAttributes与HttpSession

    SessionAttributes注解将model中与它同名的属性保存在HttpSession中. 在controller的方法执行完毕后处理SessionAttributes注解并保存的,是Hand ...

  4. ProGuard

    ProGuard的作用:  1.创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用. 2.创建的程序和程序库很难使用反向工程. 3.所以它能删除来自源文件中的没有调用的代码 4.充分利用 ...

  5. php 分析Session无效的原因

    Session在开发中是非常重要的一个数据存储变量了,它可以实现不同页面之间的传值了,下面我们来为各位介绍在使用Session时碰到过期无效的一些问题吧. PHP开发过程中,可能有朋友经常会遇到Ses ...

  6. std::string::npos mean

    std::string::npos 表示 no position, 没位置, 没找到

  7. 使用 Sahi 实现 Web 自动化测试

    Sahi 是 Tyto Software 旗下的一个基于业务的开源 Web 应用自动化测试工具.Sahi 运行为一个代理服务器,并通过注入 JavaScript 来访问 Web 页面中的元素.Sahi ...

  8. 强大的内网劫持框架之MITMf

    Mitmf 是一款用来进行中间人攻击的工具.它可以结合 beef 一起来使用,并利用 beef 强大的 hook 脚本来控制目标客户端.下面让我们一起看看如何在 Kali2.0上安装使用 Mitmf ...

  9. im4java开发向导

    0.搜索ImageMagick下载安装 1.Setting up the Environment    引入im4java到classpath    设置图片处理引擎的command searchpa ...

  10. flex的Cairngorm框架

    由于要写flex的项目,接触了一段时间的Cairngorm框架,初步认识它是flex的一个mvc结构的框架实现了页面,调用相应方法的控制,和后台交互之间的三层之间的联系.Cairngorm框架主要包括 ...