• php面试常用算法


    这些都是真实的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

     
  • 相关阅读:
    js 每个月有多少天算法
    js 树的操作
    画线
    程序员如何防止脑疲劳
    汉字求出拼音缩写
    datagird 多行外于编辑状态
    overflow: hidden 失效
    CSS 相对/绝对(relative/absolute)定位系列(三)
    display:inlineblock在Chrome与FF下导致的间隙
    css ul li 的使用及浏览器兼容问题
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/3434980.html
Copyright © 2020-2023  润新知