博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP面试之四:逻辑与算法
阅读量:6211 次
发布时间:2019-06-21

本文共 1908 字,大约阅读时间需要 6 分钟。

数据结构

  • 常见数据结构

Array 数组是 最简单 而且 应用最广泛 的数据结构

特征:1、使用连续内存空间来存储2、存放相同类型或着衍生类型的元素(PHP数组比较特别,可以存放八种数据类型)3、通过下标来访问

Set 集合

特征:1、保存不重复的元素

Map 字典

特征:1、就是PHP关联数组,以Key/Value形式存储

Stack 栈,与队列相似

特征:1、存储数据是先进先出,栈只有一个出口,只能从栈顶部添加和删除元素

Heap 堆,与二叉树的数据结构相似

特性:1、子节点的键值和索引总小于他的父节点

list 线性表,由零个或多个数据元素组成的有序序列

特性:1、线性表是一个序列,在PHP中就是索引数组

Queue 队列

特性:1、先进先出,并发中使用,可以安全地将对象从一个任务传给另一个任务,可以使用PHP数组模拟
  • 如何模拟双向链表?

使用数组Array来实现array_shift() / array_unshift()array_pop() / array_push()

其它逻辑算法

  • 重点:找出算法的规律,再用代码来实现

模拟PHP内置函数来实现某些功能

不使用PHP内置函数的前提下,实现字符串翻转

function str_rev($str){    for($i=0;true;$i++){        if(!isset($str[$i])){            break;        }    }    $return = '';    for($j=$i-1;$j>=0;$j--){        $return .= $str[$j];    }    return $return;}

常见算法考点

  • 算法是什么?

是一种解决问题的计算方法,一个问题有多种算法来解决,每种算法效率都不同,根据需求选择最优算法

  • 时间复杂度和空间复杂度

作用:用于 评定 某算法 是否合适?是否高效?


时间复杂度执行算法所需要的时间

空间复杂度执行算法所需要的内存空间

常见时间复杂度 例如:常数阶O(1)、线性阶O(n)、平方阶O(n^2)、立方阶O(n^3)、对数阶O(log2n)、nlog2n阶O(nlog2n)、指数阶O(n^n)效率从大到小:O(1) > O(log2n) > O(n) > O(nlog2n) > O(n^2) > O(n^3) > O(2^n) > O(n!) > O(n^n)时间复杂度计算方式:得出算法的计算次数(空间复杂度与之类似)用1来取代说有确定次数的加法
  • 常见排序算法

冒泡排序、直接插入排序、希尔排序、选择排序、快速排序、归并排序、堆排序

冒泡排序               最坏情况        平均情况时间复杂度      O(n^2)         O(n^2)空间复杂度      O(1)直接插入排序               最坏情况        平均情况时间复杂度      O(n^2)         O(n^2)空间复杂度      O(1)希尔排序               最坏情况        平均情况时间复杂度      O(n^2)         O(nlog2n)空间复杂度      O(1)选择排序               最坏情况        平均情况时间复杂度      O(n^2)         O(n^2)空间复杂度      O(1)快速排序               最坏情况        平均情况时间复杂度      O(n^2)         O(nlog2n)空间复杂度      O(n)           O(log2n)归并排序               最坏情况        平均情况时间复杂度      O(nlog2n)         O(nlog2n)空间复杂度      O(n)堆排序               最坏情况        平均情况时间复杂度      O(nlog2n)      O(nlog2n)空间复杂度      O(1)
  • 常见查找算法

二分查找、顺序查找

二分查找        最坏情况        平均情况时间复杂度      O(log2n)       O(log2n)空间复杂度      迭代O(1)       递归O(log2n)顺序查找        最坏情况        平均情况时间复杂度      O(n)           O(n)空间复杂度      O(1)

转载地址:http://padja.baihongyu.com/

你可能感兴趣的文章
Redis学习-Set
查看>>
MySql取得日期(前一天、某一天)
查看>>
WPF 控件库——轮播控件
查看>>
任正非的艰难时刻的启示
查看>>
Jdbc Url 设置allowMultiQueries为true和false时底层处理机制研究
查看>>
浅析新闻推荐及个性化推荐的领域相关性
查看>>
[原]C断言/静态断言
查看>>
Myeclipes快捷键
查看>>
使用 windows media player
查看>>
php数据库操作框架php-activeRecord
查看>>
mysql 保留字 冲突
查看>>
格式文件格式bad interpreter: No such file or directory
查看>>
powerdesigner逆向工程,从数据库导出PDM
查看>>
switch语句的基本使用
查看>>
DBCC--CHECKDB--结果收集
查看>>
Java中的锁概念
查看>>
iPhone开发 调用摄像头进行拍照等操作
查看>>
Javascript 坦克游戏源码分享
查看>>
CMMI 是什么东西?
查看>>
android 自定义动画按钮
查看>>