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. [日常训练]Z国特色社会路

    Description 小$W$非常喜欢社会主义,这天他开始研究它的优越性. 他发现它们国家十分乐于修建特色的社会主义道路.具体的说,$Z$国有$n$座城市,由$m$条有向边连接,城市从$1$编号. ...

  2. BZOJ 3329 Xorequ:数位dp + 矩阵快速幂

    传送门 题意 现有如下方程:$ x \oplus 3x = 2x $ 其中 $ \oplus $ 表示按位异或. 共 $ T $ 组数据,每组数据给定正整数 $ n $,任务如下: 求出小于等于 $ ...

  3. RadioButton实现多选一

    RadioButton实现多选一 一.简介 二.RadioButton实现多选一方法 1.将多个RadioButton放在一个RadioGroup里面 <RadioGroup android:i ...

  4. Shell 运算符 if

    Shell 支持多种运算符,包括: 算术运算符 原生bash不支持简单的数学运算,可以使用 expr,let 关系运算符 布尔运算符 字符串运算符 文件运算符 算术运算符 包括加减乘除,取余(%).赋 ...

  5. PCB寻找器件

    1.如果你知道元件的序号(designator),可以按下J,C,然后输入序号跳到元件所在位置,元件会出现在屏幕中心.2.如果是sch跟pcb在同一个project下,你从原理图选定元件,然后右键元件 ...

  6. 剑指offer--26.顺时针打印矩阵

    1,2,3,45,6,7,88,10,11,1213,14,15,16 每次输出第一行,然后删除第一行,逆时针旋转剩下的矩阵. ------------------------------------ ...

  7. 一步一步写jQuery插件

    转载自:http://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquer ...

  8. tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Y events)

    /************************************************************************************ * tslib: Selec ...

  9. node.js之npm库

    npm库安装可分为本地安装和全局安装,本地安装如下: npm install <Module name> 但是好像会出问题,官方貌似推荐全局安装,so 全局安装官方所给命令如下: npm ...

  10. 【ACM非算法部分】读入优化

    今天做了ACdream的比赛才知道原来还有读入优化这一说.Orz 读入一个整数的时候这么写: int a; scanf("%d",&a); 和 int a; char c; ...