几个php算法题-----其中有的还没搞明白
来源:互联网 发布:用友nc java插件下载 编辑:程序博客网 时间:2024/06/03 14:17
echo "<br/>------------PHP翻转中文字符串------------------<br/>";function reverse($str){ $r = array(); //echo mb_strlen($str);//28=16+12 for($i=0; $i<mb_strlen($str); $i++){ $r[] = mb_substr($str, $i, 1, 'UTF-8'); } return implode(array_reverse($r));}echo reverse('www.phpha.com天涯PHP博客');echo "<br/>-------------PHP计算URL的文件后缀名-----------------<br/>";function getext($url){ $data = parse_url($url); //print_r($data); //Array ( [scheme] => http [host] => blog.phpha.com [path] => /archives/1670.html [query] => id=1670 ) $path = $data['path']; $info = pathinfo($path); //print_r($info); //Array ( [dirname] => /archives [basename] => 1670.html [extension] => html [filename] => 1670 ) return $info['extension'];}echo getext('http://blog.phpha.com/archives/1670.html?id=1670');//结果:'htmlecho "<br/>-------------获取2个文件夹的相对路径-----------------<br/>";$a = '/a/b/c/d/e.php';$b = '/a/b/12/34/5.php';echo getrpath($a , $b)."<br/>";echo getrpath($b , $a);//结果:'../../../c/d/e.php';function getrpath($path, $conpath){ $pathArr = explode('/', $path); $conpathArr = explode('/', $conpath); $dismatchlen = 0; for($i=0; $i<count($pathArr); $i++){ if($conpathArr[$i] != $pathArr[$i]){ $dismatchlen = count($pathArr) - $i; $arrleft = array_slice($pathArr, $i);//array_slice() 函数在数组中根据条件取出一段值 break;//终止循环; } } return str_repeat('../', $dismatchlen).implode('/', $arrleft);}echo "<br/>-------------array_slice-----------------<br/>";/*若length有给予且是正数,将会取回length个元素,若length是负数,则会停止于数组末端处第length个元素,若省略此参数,则传回的部份将会从offset直到数组的末端。 */ $input = array("a", "b", "c", "d", "e"); $output = array_slice($input, 2); // returns "c", "d", and "e" print_r($output); $output = array_slice($input, 2, -1); // returns "c", "d" print_r($output); $output = array_slice($input, -2, 1); // returns "d" print_r($output); $output = array_slice($input, 0, 3); // returns "a", "b", and "c" print_r($output);echo "<br/>--------------遍历文件夹下的所有文件--------readdir到底怎么用法??--------<br/>";function finddir($dir){ $files = array(); if(is_dir($dir)){ if($handle = opendir($dir)){ while(($file = readdir($handle)) !== false){//??? //echo $file; //estonian.langfinnish.langfrench.langgreek.langhungarian.langitalian.langmodules...lang_dir if($file != '.' && $file != '..'){ if(is_dir(rtrim($dir, '/').'/'.$file)){ $files[$file] = finddir(rtrim($dir, '/').'/'.$file); }else{ $files[] = rtrim($dir, '/').'/'.$file; } } } closedir($handle); } } return $files;}print_r(finddir('E:/wamp/lang'));echo "<br/>------------归并排序-------???-----------<br/>";function Merge(&$arr, $left, $mid, $right) { $i = $left; $j = $mid + 1; $k = 0; $temp = array(); while ($i <= $mid && $j <= $right) { if ($arr[$i] <= $arr[$j]) $temp[$k++] = $arr[$i++]; else $temp[$k++] = $arr[$j++]; } while ($i <= $mid) $temp[$k++] = $arr[$i++]; while ($j <= $right) $temp[$k++] = $arr[$j++]; for ($i = $left, $j = 0; $i <= $right; $i++, $j++) $arr[$i] = $temp[$j];} function MergeSort(&$arr, $left, $right){ if ($left < $right) { $mid = floor(($left + $right) / 2); MergeSort($arr, $left, $mid); MergeSort($arr, $mid + 1, $right); Merge($arr, $left, $mid, $right); }}//$arr=array(3,4,1,33,453,23,11);//MergeSort($arr,1,453);echo "<br/>-------------冒泡排序-----------------<br/>";function button_sort($arr){ $count = count($arr); for ($i=0; $i < $count-1; $i++) { for ($j=$i+1; $j < $count; $j++) { if ($arr[$i]>$arr[$j]) { $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; } } } return $arr;}$arr=array(3,4,1,33,453,23,11);//print_r(button_sort($arr));echo "<br/>-------------快速排序-----------------<br/>";function quick_sort($arr) { $n=count($arr); if($n<=1) return $arr; $key=$arr[0]; $left_arr=array(); $right_arr=array(); for($i=1;$i<$n;$i++) { if($arr[$i]<=$key)//注意这里是<= $left_arr[]=$arr[$i]; else $right_arr[]=$arr[$i]; } $left_arr=quick_sort($left_arr);//回调函数; $right_arr=quick_sort($right_arr); return array_merge($left_arr,array($key),$right_arr);//不需要回调后多次拼接; //注意是array($k),需要一个数组,单独一个$key不为数组;}$arr=array(3,4,1,33,453,23,11);var_dump(quick_sort($arr));echo "<br/>------------选择排序------------------<br/>";/*i=0,把0后面所有数组找出最小的赋值给arr[k],替换,再一次次循环*/function select_sort($arr) { $n=count($arr); for($i=0;$i<$n;$i++) { $k=$i; for($j=$i+1;$j<$n;$j++) { if($arr[$j]<$arr[$k]) $k=$j; } if($k!=$i) { $temp=$arr[$i]; $arr[$i]=$arr[$k]; $arr[$k]=$temp; } } return $arr;}$arr=array(3,4,1,33,453,23,11);var_dump(select_sort($arr));echo "<br/>----------插入排序--------------------<br/>";/*第0和第1个比较,从小到大排列第1 0个和第2个比较,返回从小到大排列第2 1 0个和第3个比较,返回从小到大排列;*/function insertSort($arr) { $n=count($arr); for($i=1;$i<$n;$i++) { $tmp=$arr[$i]; $j=$i-1; while($arr[$j]>$tmp) { $arr[$j+1]=$arr[$j]; $arr[$j]=$tmp; $j--;//j--后如果>=0,返回while中继续判断执行 if($j<0) break; } } return $arr; }$arr=array(3,4,1,33,453,23,11);var_dump(insertSort($arr));echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------------------------<br/>";echo "<br/>------------我的练习------------------<br/>";$a = '/a/b/c/d/e.php';$b = '/a/b/12/34/5.php';echo my_getrpath($a , $b)."<br/>";function my_getrpath($apath,$bpath){ $apathArr = explode('/',$apath); $bpathArr = explode('/',$bpath); $dismatchlen = 0; for ($i=0; $i < count($apathArr); $i++) { if ($apathArr[$i] != $bpathArr[$i]) { $dismatchlen = count($apathArr) - $i; $arrleft = array_slice($apathArr,$i); break; } } return str_repeat('../',$dismatchlen).implode('/',$arrleft);}?>
0 0
- 几个php算法题-----其中有的还没搞明白
- 几个php算法练习题
- php常用的几个算法
- python 几个机器学习的库的算法比较。发现自已只懂其中几个。
- SEO必须有的几个流程
- 几个js算法题
- 为什么有的人飞黄腾达,有的人穷困潦倒?读懂潜规则让明白处世之道。
- PHP几个算法整理-PHP冒泡-PHP二分法-PHP求素数-PHP乘法表
- PHP几个算法整理-PHP冒泡-PHP二分法-PHP求素数-PHP乘法表
- PHP几个算法、PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
- 深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
- 突然间明白了几个道理
- 2015阿里秋招其中一个算法题(经典)
- 几个字符串的算法题
- 几个有意思的算法题
- 几个有意思的算法题
- 几个有意思的算法题
- 几个有意思的算法题
- Postgresql 基础知识-1 数据库基础操作
- c高级之指针2
- 深度学习入门思考
- 石子归并
- springmvc 静态资源访问
- 几个php算法题-----其中有的还没搞明白
- define
- C语言复杂表达式,指针高级运用
- C++代码学习
- docker自学笔记(0)——基本概念
- Java并发编程(Java Concurrency)(13)- Java volatile 关键字(Java Volatile Keyword)
- Surprising Strings poj 3096 map的运用
- 关于File.separator 文件路
- vim 编辑器常用指令