• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php面试常用算法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这些都是真实的IT公司招聘PHP程序员的面试题,这些都是简单的基本算法。包括:冒泡算法、快速排序算法、二分查找算法、顺序算法。

冒泡排序,对象可以是一个数组

01 function bubble_sort($array){
02     $count = count($array);
03     if ($count <= 0) {
04         return false;
05     }
06     for($i=0; $i<$count; $i++){
07         for($j=$count-1; $j>$i; $j--){
08             if ($array[$j] < $array[$j-1]){
09                 $tmp = $array[$j];
10                 $array[$j] = $array[$j-1];
11                 $array[$j-1] = $tmp;
12             }
13         }
14     }
15     return $array;
16 }

快速排序,对象可以是一个数组

01 function quick_sort($array) {
02     if (count($array) <= 1){
03         return $array;
04     }
05     $key = $array[0];
06     $left_arr = array();
07     $right_arr = array();
08     for ($i=1; $i<count($array); $i++){
09         if ($array[$i] <= $key){
10             $left_arr[] = $array[$i];
11         }else{
12             $right_arr[] = $array[$i];
13         }
14     }
15     $left_arr = quick_sort($left_arr);
16     $right_arr = quick_sort($right_arr);
17     return array_merge($left_arr, array($key), $right_arr);
18 }

二分查找

01 //使用二分查找数组中某个元素
02 function bin_sch($array, $low, $high, $k){
03     if ($low <= $high){
04         $mid = intval(($low+$high)/2);
05         if ($array[$mid] == $k){
06             return $mid;
07         }elseif ($k < $array[$mid]){
08             return bin_sch($array, $low, $mid-1, $k);
09         }else{
10             return bin_sch($array, $mid+1, $high, $k);
11         }
12     }
13     return -1;
14 }

顺序查找

01 //顺序查找数组中某个元素
02 function seq_sch($array, $n, $k){
03     $array[$n] = $k;
04     for($i=0; $i<$n; $i++){
05         if($array[$i]==$k){
06             break;
07         }
08     }
09     if ($i<$n){
10         return $i;
11     }else{
12         return -1;
13     }
14 }

写一个二维数组排序算法函数,可以调用php内置函数,能够具有通用性

01 function array_sort($arr, $keys, $order=0) {
02     if (!is_array($arr)) {
03         return false;
04     }
05     $keysvalue = array();
06     foreach($arr as $key => $val) {
07         $keysvalue[$key] = $val[$keys];
08     }
09     if($order == 0){
10         asort($keysvalue);
11     }else {
12         arsort($keysvalue);
13     }
14     reset($keysvalue);
15     foreach($keysvalue as $key => $vals) {
16         $keysort[$key] = $key;
17     }
18     $new_array = array();
19     foreach($keysort as $key => $val) {
20         $new_array[$key] = $arr[$val];
21     }
22     return $new_array;
23 }

原文地址:http://www.springload.cn/springload/detail/326

 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php脚本#!/usr/bin/envphp写法的好处发布时间:2022-07-10
下一篇:
PHP:封装Mysqli的连接、关闭和增改查(面向过程)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap