当前位置: 首页 > 后端技术 > PHP

PHP面试四:逻辑与算法

时间:2023-03-30 02:23:45 PHP

数据结构常见数据结构数组数组是最简单、应用最广泛的数据结构特点:1.使用连续的内存空间来存储2.存储相同类型或派生类型的元素(PHP数组比较特殊,可以存储八种数据类型)三、通过下标访问SetCollection特性:1、保存不重复元素Map字典特性:1、PHP关联数组,以Key/Value的形式存储Stack,类似于队列特性:1、存储数据是高级先出,栈只有一个出口,只能从栈顶添加和删除元素。Heap堆,类似于二叉树的数据结构。特点:1.子节点的键值和索引总是小于其父节点列表线性表,由零或多个数据元素组成的有序序列。特点:1.线性表是一个序列。在PHP中,它是一个索引数组。另一个任务,可以用PHP模拟数组如何模拟双向链表?使用数组Array实现array_shift()/array_unshift()array_pop()/array_push()其他逻辑算法重点:找出算法的规律,然后用代码实现模拟PHP内置函数实现一些功能在不使用PHP内置函数的前提下,实现字符串翻转函数str_rev($str){for($i=0;true;$i++){if(!isset($str[$i])){break;}}$return='';对于($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表示有一定的加法次数常用排序算法冒泡排序、直接插入排序、希尔排序、选择排序、快速排序、归并排序、堆排序冒泡排序worstcaseaveragecaseTime复杂度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)普通搜索算法二分搜索,顺序搜索二分搜索WorstCaseAverageCase时间复杂度O(log2n)O(log2n)空间复杂度IterationO(1)RecursionO(log2n)SequentialFindingWorstCaseAverage案例时间复杂度O(n)O(n)空间复杂度O(1)