目錄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就是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小...