php基础排序
2016-03-25 10:05
645 查看
/** * 插入 */ function charu($arr) { $count = count ( $arr ); for($i = 1; $i < $count; $i ++) { // 以数组第一个数字为基准 $temp = $arr [$i]; // 控制循环并进行交换 for($j = $i - 1; $j >= 0; $j --) { if ($temp < $arr [$j]) { $arr [$j + 1] = $arr [$j]; $arr [$j] = $temp; } else { break; } } } return $arr; } /** * 选择 */ function xuanze($arr) { $count = count ( $arr ); for($i = 0; $i < $count - 1; $i ++) { $min = $i; for($j = $i + 1; $j < $count; $j ++) { if ($arr [$min] > $arr [$j]) { $min = $j; } } if ($i != $min) { $temp = 0; $temp = $arr [$min]; $arr [$min] = $arr [$i]; $arr [$i] = $temp; } } return $arr; } /** * 冒泡 */ function maopao($arr) { $count = count ( $arr ); for($i = 0; $i < $count - 1; $i ++) { for($j = $i + 1; $j < $count; $j ++) { if ($arr [$i] > $arr [$j]) { $temp = 0; $temp = $arr [$j]; $arr [$j] = $arr [$i]; $arr [$i] = $temp; } } } return $arr; } /** * 快速 */ function kuaisu($arr) { $count = count ( $arr ); if ($count <= 1) { return $arr; } $temp = $arr [0]; $left = $right = [ ]; for($i = 1; $i < $count; $i ++) { if ($temp > $arr [$i]) { $left [] = $arr [$i]; } else { $right [] = $arr [$i]; } } $left = kuaisu ( $left ); $right = kuaisu ( $right ); return array_merge ( $left, array ($temp), $right ); } /** * 木桶 */ function mutong($arr) { $min = min($arr); $max = max($arr); $count = count($arr); $buffer = array_fill ($min, $max - $min + 1, 0); for($i = 0; $i < $count - 1; $i ++) { $buffer [$arr[$i]] ++; } // 根据统计桶内的次数输出桶内的数字 for($i = $min; $i < $max + 1; $i ++) { for($j = 0; $j < $buffer[$i]; $j ++) { $result[] = $i; } } return $result; } /** * 加锁写文件 */ function write_file($filepath,$msg=''){ $file = fopen($filepath,'a+');//w+表覆盖;a+表叠加 if(flock($file,LOCK_EX)){ fwrite($file,$msg); flock($file,LOCK_UN); }else{ fclose($file);//关闭,防止锁死 write_file();//递归回调--重新开始写 } fclose($file); } /** * 约瑟夫环 */ function ysf($n,$m){ $y = 0; for($i=0;$i<=$n;$i++){ $y = ($y + $m)%$i; } return $y + 1; } // 1,1,2,3,5,8,13,... // 第n个数是多少 function CoolAdd($n){ if(in_array($n,array(1,2))){ return 1; } $tmp = array(); $tmp[1]=1; $tmp[2]=1; for($i=3;$i<=$n;$i++){ $tmp[$i]=$tmp[$i-1]+$tmp[$i-2]; } return $tmp; } /** * 二分查找:查找一个值在数组中的位置 * @$arr:操作的数组,前提是按顺序排列 * @$val:查找的值 * @$low:查找的起始位置,默认从数组的第一个数找起 * @$hight:查找的结束位置 */ function erfen($arr,$fields,$start=0,$end){ while ($start <= $end){ $center = ceil($start + ($end - $start)/2); if($arr[$center] > $fields){ return true; }elseif($arr[$center] > $fields){//如果在前面 $end = $center - 1;//把end设置为$mid-1 }else{ $start = $center + 1;//把$start 设置为中间键值加1 } } return false; } /** * @uses 遍历文件夹 */ function read_all_dir ( $dir ) { $result = array(); $handle = opendir($dir); if ( $handle ) { while ( ( $file = readdir ( $handle ) ) !== false ) { if ( $file != '.' && $file != '..') { $cur_path = $dir . DIRECTORY_SEPARATOR . $file; if ( is_dir ( $cur_path ) ) { $result['dir'][$cur_path] = read_all_dir ( $cur_path ); } else { $result['file'][] = $cur_path; } } } closedir($handle); } return $result; }
相关文章推荐
- php截取字符串函数
- php,html同时上传多个文件正解
- PHP 替换标签和标签内的内容
- QNetworkAccessManager 实现的 ftp 上传
- thinkphp实现登录后返回原界面
- php.ini配置解析
- 深入理解PHP内核(五)变量及数据类型-变量的结构和类型
- Composer管理PHP包
- PHP debug 环境配置
- php 执行命令函数
- PHP实现短信宝发送短信验证码功能
- define_var.php
- PHP simplexml_load_string() 函数 ,把 XML 字符串载入对象中
- notepad++上zend-coding的使用
- 151 php SQL注入的例子 & mysql_real_escape_string
- 破解phpstorm
- var_var.php
- PHP5.2中PDO的简单使用方法
- PHP简单判断字符串是否包含另一个字符串的方法
- PHP学习笔记-流程控制语句