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