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