2018 php 面试
排序算法
快速排序
快速排序是十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选,以保证左边的元素都不大于它,其右边都不小于它
function quickSort($arr){
//获取数组长度
$length = count($arr);
//判断长度是否需要继续二分比较
if($length <= 1){
return $arr
}
// 定义基准元素
$base = $arr[0];
//定义两个空数组,用于存放和基准元素比较后的结果
$left = [];
$right = [];
//遍历数组
for ($i=1;$i<$length;i++){
//和基准元素作比较
if ($arr[i] >$base){
$right[] = $arr[$i];
}else{
$left[] = $arr[$i];
}
}
//然后递归分别处理left和right
$left = quickSort($left);
$right = quickSort($right);
//合并
return array_merge($left,[$base],$right)
}
冒泡排序
思路:法如其名,就像冒泡一样,每次从数组中冒出一个最大的数。
比如:2,4,1
第一次冒出4:2,1,4
第二次冒出2:1,2,4
function bubbleSort($arr){
// 获取数组长度
$length = count($arr);
// 第一层循环控制冒泡轮次
for($i=0; $i < $length-1; $i++) {
// 内层循环控制从第0个键值和后一个键值比较,每次冒出一个最大的数
for($k=0; $k < $length-$i; $k++) {
if($arr[$k] > $arr[$k+1]){
$tmp = $arr[$k+1];
$arr[$k+1] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
选择排序
思路:每次选择一个相应的元素,然后将其放到指定的位置
function selectSort($arr){
//实现思路
//双重循环完成,外层控制轮数,当前的最小值,内层控制比较次数
//获取长度
$length = count($arr);
for($i=0;$i<$length-1;$i++){
//假设最小值的位置
$p = $i;
//使用假设的最小值和其他值比较,找到当前的最小值
for ($j=$i+1;$j<$length;$j++){
//$arr[$p] 是已知的当前最小值
//判断当前循环值和已知最小值的比较,当发下最小的值时记录下键,并进行下一次比较
if($arr[$p]>$arr[$j]){
$p = $j;//比假设的值更小
}
}
//通过内部for循环找到了当前最小值的key,并保存在$p中
//判断日光当前$p中的键和假设的最小值的键不一致增将其互换
if ($p !=$i){
$tmp = $arr[$p];
$arr[$p] = $arr[$i];
$arr[$i] = $tmp
}
}
//返回最终结果
return $arr
}
2018 php 面试的更多相关文章
- (转)喜马拉雅2018 Java面试题目
背景:将网上的题目整理下. java基础 1:hashTable hashMap ConcurrentHashMap 的区别.数据结构.线程安全 2:equals和==区别, 重写equals一定要重 ...
- 2018前端面试总结,看完弄懂,工资少说加3K | 掘金技术征文
2018前端面试总结,看完弄懂,工资少说加3K | 掘金技术征文:https://juejin.im/post/5b94d8965188255c5a0cdc02
- 2018跳槽面试必备之深入理解 Java 多线程核心知识
导语:多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线 ...
- 2018年初面试Java(1.5年经验)
xml文档如何解析 控制反转如何实现 http://www.cnblogs.com/qf123/p/8602972.html struts2和springmvc的区别 http://www.cnblo ...
- weak看iOS面试
2013年 面试官:代理用weak还是strong? 我 :weak . 面试官:明天来上班吧 2014年 面试官:代理为什么用weak不用strong? 我 : 用strong会造成循环引用. 面试 ...
- [找工作] 2019秋招|从春招到秋招,Java岗经验总结(收获AT)
转自(有更多) https://blog.csdn.net/zj15527620802/article/month/2018/10 前言 找工作是一件辛酸而又难忘的历程.经历过焦虑.等待.希望,我们最 ...
- Android 目前最稳定和高效的UI适配方案
Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解.刚好,近期准备对糗事百科Android客户端设计 ...
- Android 文章合集 200+ 篇
code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 镇楼 2017 文章合集 2017 年度文章分类整理 下面是 2018 年公众号所发表的文章分类整理 面经 一年经验 ...
- 2018 年 3 月 iOS 面试总结(上市公司,BAT)
序言: 今年2月中下旬因为个人原因,换了一份工作,3月初期间面试了有3,4家,基本都是D轮或者刚刚上市的公司,也有上榜的BAT,也从他们的面试笔试中看到了自己的一些不足,于是就想写出来和大家分享一下, ...
随机推荐
- maven:Fatal error compiling: 无效的目标发行版: 1.8.0_45 -> [Help 1]
使用mvn clean install命令的时候出现如下的错误: Failed to execute goal org.apache.maven.plugins:maven-compiler-plug ...
- 搭建Nuget服务器(Nuget私服)
一.前言 对公司或者对个人来说,经过一段时间的沉淀之后,都会有一些框架或者模块,为了对这些框架或者模块进行更好的管理和维护,也为了方便后面的开发或者其他同事,我们可以在我们本地或者内网搭建一个Nuge ...
- 怎么在本地建立一个Maven 项目push到码云(https://git.oschina.net)
本地建立一个的mvan项目不使用SmartGit push到码云上. 1 首先在自己码云的建立一个maven 空项目 2 然后打开STS(Spring Tool Suite) 新建一个Maven( ...
- SpringMVC工程环境由tomcat切换到weblogic,访问不到静态资源
在org.springframework.web.servlet.DispatcherServlet之前加入 <servlet-mapping> <servlet-name>F ...
- php判断访问协议是否是https
可以通过$_SERVER中获取是否是HTTPS协议. 在$_SERVER["SERVER_PROTOCOL"]中拿到的只能是http.$_SERVER['HTTPS'] === ...
- [Advanced Python] 11 - Implement a Class
基础概念:[Python] 08 - Classes --> Objects 进阶概念:[Advanced Python] 11 - Implement a Class 参考资源:廖雪峰,面向对 ...
- Linux入门基础之 下
八.Linux 管道.重定向及文本处理 8.1.Linux 多命令协作:管道及重定向 8.1.1 开源文化 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件.代码.功能的重新组合 ...
- ASP.NET Core 3.0 gRPC 双向流
目录 ASP.NET Core 3.0 使用gRPC ASP.NET Core 3.0 gRPC 双向流 ASP.NET Core 3.0 gRPC 认证授权 一.前言 在前一文 <ASP.NE ...
- linux下安装node.js时npm无法使用
安装node.js 10.15.1版本时,安装完在node的安装目录下执行./node -v查看node版本,成功则表示node已安装成功 [root@localhost bin]# ./node - ...
- 将Jexus+mono和网站一起通过Dockerfile打包到docker镜像
上次使用别人打包好的docker镜像,往里边加入文件,最终asp.net的docker容器化运行. 这次决定直接全新打包一个jexus+asp.net网站的docker包. 进入root目录,并在ro ...