PHP面試之四 邏輯與演算法

2021-09-14 05:47:05 字數 3202 閱讀 7522

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內建函式的前提下,實現字串翻轉

function str_rev($str)

}$return = '';

for($j=$i-1;$j>=0;$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)

php 面試程式邏輯問題,PHP面試之四 邏輯思維

資料結構 常見資料結構 array 陣列是 最簡單 而且 應用最廣泛 的資料結構 特徵 1 使用連續記憶體空間來儲存 2 存放相同型別或著衍生型別的元素 php陣列比較特別,可以存放八種資料型別 3 通過下標來訪問 set 集合 特徵 1 儲存不重複的元素 map 字典 特徵 1 就是php關聯陣列...

php面試題四

php面試題二 8.談談事務處理 答案是 事物只是一組sql語句,通常因為它們是彼此相互依賴的。所有要在全有或者 全無的模式下執行,只有當所有的語句都執行成功了,乙個事物才算成功了,任何乙個語句中的失敗應該都會導致系統 回滾 到它先前的狀態,以避免資料連線 崩潰問題。9.apache mysql p...

PHP面試 基本演算法

一 排序 1 冒泡 冒泡 arr array 2,4,654,76,43,23,65,786,43,12 function mysort arr return arr var dump mysort arr 2 快排 快排 arr array 2,4,654,76,43,23,65,786,43,1...