1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP面试题之算法解析

作者:用户 来源:互联网 时间:2017-12-01 16:30:47

算法试题

PHP面试题之算法解析 - 摘要: 本文讲的是PHP面试题之算法解析, 面试中经常被问到会什么算法,这里整合一些常见的算法及它们的实现原理.下面的例子都是经过测试可用的,如果有什么问题请告知!! 本人小白,如果有更好的实现方式,敬请赐教,感激不尽!!!! 冒泡排序,快速排序,二分法查找,快速查找 /** *

面试中经常被问到会什么算法,这里整合一些常见的算法及它们的实现原理.下面的例子都是经过测试可用的,如果有什么问题请告知!!

本人小白,如果有更好的实现方式,敬请赐教,感激不尽!!!!

冒泡排序,快速排序,二分法查找,快速查找

/** * 冒泡排序* 相邻2数比较,小的在前,大的在后* 数组有几个元素,就要比较几轮 $i* 每轮需要比较的次数为,数组元素个数-已比较的次数 $j* @param   array  $array* @return  array  $array*/function bubbleSort($array){        $cnt = count($array);        for($i = 0; $i < $cnt ; $i++){                for($j = 0 ; $j < ($cnt-$i-1) ; $j++){                        if($array[$j] > $array[$j+1]){                                $temp = $array[$j];                                $array[$j] = $array[$j+1];                                $array[$j+1] = $temp;                        }                }        }        return $array;}

 

/*** 快速排序* 递归实现* 获取数据第一数,循环使后面的数与其比较,* 比其小的放在一个数组中,比其大的放在一个数组中* 将2个数组递归调用,直到最终数组元素小于等于1时,没有可以比较的元素* 通过array_merge函数,将比较的数组按大小顺序合并然后一层一层的return出去,最终实现从小到大排序* @param array $array* @return array $array */function quickSort($array){        if(count($array) <= 1 ) return $array;        $key = $array[0];        $left_arr = array();        $right_arr = array();        for ($i=1;$i<count($array);$i++){                if($array[$i] <= $key){                        $left_arr[] = $array[$i];                }else{                        $right_arr[] = $array[$i];                }        }        $left_arr = quickSort($left_arr);        $right_arr = quickSort($right_arr);        return array_merge($left_arr,array($key),$right_arr);}

 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法 试题 ,以便于您获取更多的相关知识。