Python知識分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
數(shù)據(jù)結(jié)構(gòu)與算法面試最全合集 PDF 下載
匿名網(wǎng)友發(fā)布于:2024-09-11 09:31:15
(侵權(quán)舉報(bào))
(假如點(diǎn)擊沒反應(yīng),多刷新兩次就OK!)

數(shù)據(jù)結(jié)構(gòu)與算法面試最全合集 PDF 下載 圖1

 

 

資料內(nèi)容:

1.2 算法
算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作
算法效率的度量是通過時間復(fù)雜度空間復(fù)雜度來描述的。
1.2.0.1 時間復(fù)雜度 一個語句的頻度是指該語句在算法中被重復(fù)執(zhí)行的次數(shù)。算法中所有語句的頻度
之和記為 T(n),它是該算法問題規(guī)模 n 的函數(shù),時間復(fù)雜度主要分析 T(n) 的數(shù)量級。
1.2.0.2 空間復(fù)雜度 算法的空間復(fù)雜度 S(n),定義為該算法所耗費(fèi)的存儲空間,它是問題規(guī)模 n 的函
數(shù)。
2 線性表
線性表是具有相同數(shù)據(jù)類型的 n 個數(shù)據(jù)元素的有限序列。即除第一個元素外,每個元素有且僅有一
個直接前驅(qū),除最后一個元素外,每個元素有且僅有一個直接后繼。插入、刪除和查找的算法平均時間復(fù)
雜度均為 O(n)。
2.1 線性表的順序表示
線性表的順序存儲又稱為順序表,主要特點(diǎn)如下:
(1) 能進(jìn)行隨機(jī)訪問。可通過首地址和元素序號可以在 O(1) 時間內(nèi)找到指定的元素。
(2) 順序表邏輯上相鄰的元素物理上也相鄰,導(dǎo)致在插入和刪除時需要移動大量的元素。
2.1.2 常見算法
2.1.2.1 算法:設(shè)計(jì)一個高效的算法,將順序表的所有元素逆置,要求算法的空間復(fù)雜度為 O(1) 掃描
順序表 L 的前半部分元素,對于元素 L[i] 將其與后半部分對應(yīng)元素 L[L.length i 1] 進(jìn)行交換。
2.1.2.2 算法:已經(jīng)在一維數(shù)組 A[m+n] 中依次存放著兩個線性表 (a1, a2...am) (b1, b2...bm),試編
寫一個函數(shù),將數(shù)組中兩個順序表的位置互換,即將放在前面 核心思想:首先將 A[m+n] 中的全部元素
(a1, a2...am, b1, b2...bn) 原地逆置為 (bn, bn1, ...b2, b1, am, ...a1),再對前 n 個元素和后 m 個元素分別使用
逆置算法,就可以實(shí)現(xiàn)。