PHP面试之四:逻辑与算法

数据结构

  • 常见数据结构算法

Array 数组是 最简单 并且 应用最普遍 的数据结构数组

特征:
一、使用连续内存空间来存储
二、存放相同类型或着衍生类型的元素(PHP数组比较特别,能够存放八种数据类型)
三、经过下标来访问

Set 集合安全

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

Map 字典数据结构

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

Stack 栈,与队列类似并发

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

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

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

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

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

Queue 队列对象

特性:
一、先进先出,并发中使用,能够安全地将对象从一个任务传给另外一个任务,能够使用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)
相关文章
相关标签/搜索