巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

PHP口试经常利用算法(保举)

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-27 10:44:09 阅读数: 121

一、冒泡排序

根基思惟:

对须要排序的数组从后往前(逆序)停止多遍的扫描,当发明相邻的两个数值的挨次与排序请求的法则不分歧时,就将这两个数值停止互换。如许比拟小(大)的数值就将逐步从后面向后面挪动。

//冒泡排序

<?php

  function mysort($arr)
  {
    for($i = 0; $i < count($arr); $i++)
    {
      $isSort = false;
      for ($j=0; $j< count($arr) - $i - 1; $j++) 
      {
        if($arr[$j] < $arr[$j+1])
        {
          $isSort = true;
          $temp = $arr[$j];
          $arr[$j] = $arr[$j+1];
          $arr[$j+1] = $temp ;
        }
      }
      if($isSort)
      {
        break;
      }
    }
    return $arr;
  }

  $arr = array(3,1,2);
  var_dump(mysort($arr));
?>

二、疾速排序

根基思惟:

在数组中挑出一个元素(多为第一个)作为标尺,扫描一遍数组将比标尺小的元素排在标尺之前,将一切比标尺大的元素排在标尺以后,经由过程递归将各子序列别离别离为更小的序列直到一切的序列挨次分歧。

//疾速排序

<?php
  //疾速排序
    function quick_sort($arr) 
    {
      //先判定是不是须要持续停止
      $length = count($arr);
      if($length <= 1) 
      {
        return $arr;
      }
    
      $base_num = $arr[0];//挑选一个标尺 挑选第一个元素

      //初始化两个数组
      $left_array = array();//小于标尺的
      $right_array = array();//大于标尺的
      for($i=1; $i<$length; $i++) 
      {      //遍历 除标尺外的一切元素,根据巨细干系放入两个数组内
        if($base_num > $arr[$i]) 
        {
          //放入左侧数组
          $left_array[] = $arr[$i];
        } 
        else 
        {
          //放入右侧
          $right_array[] = $arr[$i];
        }
      }
      //再别离对 左侧 和 右侧的数组停止不异的排序处置体例
      //递归挪用这个函数,并记实成果
      $left_array = quick_sort($left_array);
      $right_array = quick_sort($right_array);
      //归并左侧 标尺 右侧
      return array_merge($left_array, array($base_num), $right_array);
    }

    $arr = array(3,1,2);
    var_dump(quick_sort($arr));

?>

三、二分查找

根基思惟:

假定数据是按升序排序的,对给定值x,从序列的中间地位起头比拟,若是以后地位值即是x,则查找胜利;若x小于以后地位值,则在数列的前半段中查找;若x大于以后地位值则在数列的后半段中持续查找,直到找到为止。(数据量大的时辰利用)

//二分查找

<?php
  //二分查找
  function bin_search($arr,$low,$high,$k)
  {
    if($low <= $high)
    {
      $mid = intval(($low + $high)/2);
      if($arr[$mid] == $k)
      {
        return $mid;
      }
      else if($k < $arr[$mid])
      {
        return bin_search($arr,$low,$mid-1,$k);
      }
      else
      {
        return bin_search($arr,$mid+1,$high,$k);
      }
    }
    return -1;
  }

  $arr = array(1,2,3,4,5,6,7,8,9,10);

  print(bin_search($arr,0,9,3));
?>

四、挨次查找

根基思惟:

从数组的第一个元素起头一个一个向下查找,若是有和方针分歧的元素,查找胜利;若是到最初一个元素仍不方针元素,则查找失利。

//挨次查找 

<?php
  //挨次查找
  function seq_search($arr,$n,$k)
  {
    $array[$n] = $k;
    for($i = 0;$i < $n; $i++)
    {
      if($arr[$i] == $k)
      {
        break;
      }
    }

    if($i < $n)
    {
      return $i;
    }
    else
    {
      return -1;
    }
  }
?>

五、写一个函数,能够或许遍历一个文件下的一切文件和子文件夹

<?php  
  function my_scandir($dir)
  {
    $files = array();
    if($handle = opendir($dir))
    {
      while (($file = readdir($handle))!== false) 
      {
        if($file != ".." && $file != ".")
        {
          if(is_dir($dir."/".$file))
          {
            $files[$file]=my_scandir($dir."/".$file);
          }
          else
          {
            $files[] = $file;
          }
        }
      }

      closedir($handle);
      return $files;
    }
  }

  var_dump(my_scandir("../"));
?>

六、写一个函数,尽能够高效的从一个规范url中掏出文件的扩大名

<?php
  function getExt($url)
  {
    $arr = parse_url($url);//parse_url剖析一个 URL 并前往一个接洽关系数组,包罗在 URL 中呈现的各种构成局部
    //"scheme" => string "http" (length=4)
    //"host" => string "www.sina.com.cn" (length=15)
    //"path" => string "/abc/de/fg.php" (length=14)
    //"query" => string "id=1" (length=4)
    $file = basename($arr["path"]);// basename函数前往途径中的文件名局部
    $ext = explode(".", $file);
    return $ext[count($ext)-1];
  }

  print(getExt("http://www.sina.com.cn/abc/de/fg.html.php?id=1"));

?>

七、完成中笔墨符串截取无乱码的体例

可利用mb_substr,可是须要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且不被正文掉,不然会呈现未界说函 数的题目。

以上这篇PHP口试经常利用算法(保举)便是小编分享给大师的全数内容了,但愿能给大师一个参考,也但愿大师多多撑持网页设想。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

15
01月
收集公司网站的全体设想

巅云.自助建站系统-是一佰互联自立研发“PC+手机+微站+购物+APP+小法式”一体化全网营销PHP企业智能建站软件,完整“Diy”拖拽自定... >>概况

26
04月
thinkPHP5.0框架引入Traits功

本文实例报告了thinkPHP5.0框架引入Traits功效。分享给大师供大师参考,详细以下:ThinkPHP 5.0起头接纳trait功效... >>概况

07
04月
网页转动殊效要若何设想?来看看这12个网站

动效在现在的网站上已无处不在了,虽然它们很罕见,可是这些动功效的是不是适合,是不是真正缔造了充足优异的用户休会,还鲜有会商。明天我要聊的“转动... >>概况

27
04月
thinkphp多层MVC用法阐发

本文实例报告了thinkphp多层MVC用法。分享给大师供大师参考,详细以下:ThinkPHP撑持多层设想。1.模子层Model利用多层目次... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站