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)
相關文章
相關標籤/搜索