第三章 查詢 一 《演算法》讀書筆記

2022-06-09 19:42:07 字數 1571 閱讀 8375

目錄3.1.2 有序符號表

3.1.4 無序鍊錶中的順序查詢

3.1.5 有序陣列中的二分查詢

3.1.6 對二分查詢的分析

3.1.7 預覽

符號表是一種儲存鍵值對的資料結構,支援兩種操作:插入(put),即將一組新的鍵值對存入表中;查詢(get),即根據給定的鍵得到相應的值

3.1.1.2 重複的鍵

3.1.1.3 空(null)鍵

3.1.1.4 空(null)值

3.1.1.5 刪除操作

3.1.2.8 成本模型

查詢的成本模型:在學習符號表的實現時,我們會統計比較的次數(等價性測試時鍵的相互比較)。在內迴圈不進行比較(極少)的情況下,我們會統計陣列的訪問次數。

public class sequentialsearchst

public node(key key, value val, node next)

public value get(key key)

public void put(key key, value val)

first = new node(key, val, first);

} }

在含有n對鍵值的基於(無序)鍊錶的符號表中,未命中的查詢和插入操作都需要n次比較。命中的查詢在最壞情況下需要n次比較。特別地,向乙個空表中插入n個不同的鍵需要~n2次比較。

public class binarysearchst, value>

public int size()

public value get(key key)

public int rank(key key);

public void put(key key, value val)

for(int j = n; j > i; j--)

keys[i] = key; vals[i] = val;

n==;

}public void delete(key key);

}

3.1.5.1 二分查詢

public int rank(key key)

return lo;

}

在n個鍵的有序陣列中進行二分查詢最多需要(lgn+1)次比較(無論是否成功)。

向大小為n的有序陣列中插入乙個新的元素在最壞情況下需要訪問2n次數組,因此向乙個空符號表中插入n個元素在最壞情況下需要訪問n2次數組。

演算法(資料結構)

最壞查詢成本

最壞插入成本

平均查詢成本

平均插入成本

是否高效地支援有序性相關的操作

順序查詢(無序鍊錶)nn

n/2n

否二分查詢(有序陣列)

lgn2n

lgnn

第三章 查詢 三 《演算法》讀書筆記

目錄3.3.2 紅黑二叉查詢樹 3.3.3 實現 3.3.4 刪除操作 3.3.5 紅黑樹的性質 定義。一棵2 3查詢樹或為一棵空樹,或由以下結點組成 和以前一樣,我們將指向一顆空樹的連線稱為空鏈結。3.3.1.2 向2 結點中插入新鍵 3.3.1.3 向一棵只含有乙個3 結點的樹中插入新鍵 3.3...

第三章讀書筆記

程序管理 3.1程序 程序就是處於執行期的程式 目標碼存放在某種儲存介質上 但程序並不僅僅侷限於一段可執行程式 執行執行緒,執行緒,是程序活動的物件。兩種虛擬機制 虛擬處理器和虛擬記憶體。最終,程式通過exit 系統呼叫退出執行。3.2程序描述及任務結構 核心把程序的列表存放在叫做任務佇列的雙向迴圈...

第三章讀書筆記

本章是講了git的使用入門,為學習本書的人展示了git的基本用法。儘管git並不是學習android移植和linux核心 驅動開發必須掌握的技術。但對於深入研究這些底層技術的人來說,git將成為學習過程中必不可少的工具。git是什麼,git就是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小...