PHP算法面试题 排序和查找
来源:互联网 发布:js实现日期格式化 编辑:程序博客网 时间:2024/05/17 02:21
1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 //冒泡排序(数组排序) public static function bubble_sort(array $array){ for($i=0;$i<count($array);$i++){ for($j=count($array)-1;$j>$i;$j--){ if($array[$j] > $array[$j-1]){ $temp = $array[$j]; $array[$j]=$array[$j-1]; $array[$j-1]=$temp; } } } return $array; //返回值 } //快速排序(数组排序) public static function quick_sort($array){ if( ! is_array($array) ){ return $array; }else if(count($array) < 2 ){ return $array; } $key = $array[0]; $leftArr=array(); $rightArr=array(); for($i=1;$i<count($array);$i++){ if($array[$i] >= $key){ $leftArr[]= $array[$i]; }else{ $rightArr[]=$array[$i]; } } $leftArr=self::quick_sort($leftArr); $rightArr=self::quick_sort($rightArr); return array_merge($leftArr,array($key),$rightArr); } //选择排序(数组排序) function select_sort(array $array){ $len=count($array); for($i=0;$i<$len;$i++){ $mix=$i; for($j=$i+1;$j<$len;$j++){ if($array[$mix] > $array[$j] ){ $mix = $j; } } if($mix != $i){ $temp = $array[$i]; $array[$i] =$array[$mix]; $array[$mix]=$temp; } } return $array; } //插入排序 //2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组 //二分查找(数组里查找某个元素) //递归 //$low:数组的开始下标 //$high:数组的结束下标 $k:查找的值 function two_search($array,$low,$high,$val){ sort($array); // print_r($array); if($low<=$high){ //取中间的下标 $mid=intval( ($low+$high) / 2 ); echo $mid.'<br/>'; if($array[$mid] == $val){ return $mid; }else if($val < $array[$mid]){ return $this->two_search($array,$low,$mid-1,$val); }else{ return $this->two_search($array,$mid+1,$high,$val); } } return -1; } //顺序查找(数组里查找某个元素) function seq_sch($array,$k){ //$array为数组,$k为要查找的值 $n=count($array); //count函数用于计算数组中的元素个数 $array[$n] = $k; //新建一个元素,并将k存放进去 for($i=0; $i<$n; $i++){ if($array[$i]==$k){ //逐一比较 break; } } if ($i<$n){ //如果在新元素的前面找到了要找的值,则返回该值 return $i; }else{ return -1; } } //非递归 function two_search($array,$low,$high,$val){ while($low <= $high){ $mid = intval( ($low+$high)/2 ); if($array[$mid] == $val){ return $mid; }else if( $val < $array[$mid]){ $low=$mid - 1; }else{ $high=$mid + 1; } } return -1; } 3.写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数 二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 function array_sort($arr, $keys, $order=0) { if (!is_array($arr)) { return false; } $keysvalue = array(); foreach($arr as $key => $val) { $keysvalue[$key] = $val[$keys]; } if($order == 0){ asort($keysvalue); }else { arsort($keysvalue); } reset($keysvalue); foreach($keysvalue as $key => $vals) { $keysort[$key] = $key; } $new_array = array(); foreach($keysort as $key => $val) { $new_array[$key] = $arr[$val]; } return $new_array; } ```
阅读全文
1 0
- PHP算法面试题 排序和查找
- 排序算法面试题
- PHP 算法面试题
- PHP常用的排序和查找算法
- 剑指offer之面试题:查找和排序
- 【IT面试题】排序算法
- 排序算法常见面试题
- php实现常用排序算法和查找算法
- php排序和查找
- 算法与数据结构面试题(1)-把二元查找树转变成排序的双向链表
- 算法面试题01:将一棵二元查找树转换成一个排序的双向链表
- 查找和排序算法
- 算法--排序和查找
- 排序和查找算法
- 面试题-----排序算法之选择排序
- 常见查找和排序算法(PHP实现)
- 排序算法和查找算法
- 排序算法和查找算法
- 导出的Excel带有下拉框
- python文件操作
- STM32模拟IIC
- Caffe训练分类器不收敛,loss居高不下
- 如何将谷歌地图导出为百度瓦片
- PHP算法面试题 排序和查找
- 数据库笔记
- EXE之间通讯
- linux下centos下安装samba服务
- iOS 图片虚化。裁剪。等比例缩放
- NYG的序列拆分 详解(递推矩阵快速幂)
- The JRE_HOME environment variable is not defined correctly This environment variable is needed 。。。
- OMRON E6B2-CWZ6C
- 常用类——字符