查詢的目的是從給定的同一型別的資料集合中,找出人們所需要的資料元素(或記錄)/
基本術語:
記錄(record)
關鍵字(keyword)
主關鍵字(primarykey)
次關鍵字(secondary key)
查詢表(searching table)
動態查詢(dynamic searching)
靜態查詢(static searching)
內部排序(internal sorting)
外部排序(external sorting)
穩定性(stability)
1 靜態查詢
一、順序查詢
順序查詢是用待查詢記錄與查詢表中的記錄逐個比較,若找到相等記錄,則查詢成功,否則,查詢失敗。
二、折半查詢(二分查詢)
折半查詢的前提是表有序的而且是順序儲存
使用三個指標low mid和high。
二分查詢的效能分析
為了分析二分查詢的效能,可以用二叉樹來描述二分查詢的過程。
把當前查詢區間的中點作為根節點,左子區和右子區間分別作為根的左子樹和右子樹,
左子區間和右子區間按類似的方法,由此得到的二叉樹成為二分查詢的判定樹。
asl是平均查詢長度(或說平均比較次數)
2 動態查詢
在查詢表中實施查詢時,對於給定值key,若表中存在關鍵字段等於key的記錄,則查詢成功。
否則將帶查詢記錄按規則插入查詢表中。
下面我們介紹幾種動態查詢方法。
一、二叉排序樹查詢:前提是將查詢表組織為一顆二叉排序樹。
二叉排序樹。它或是一顆空樹,或是一顆具有如下特徵的非空二叉樹。
(1)若他的左子樹非空,則左子樹上所有結點的關鍵字均小於根節點的關鍵字。
(2)若他的右子樹非空,則右子樹上所有結點的關鍵字均大於等於根節點的關鍵字;
(3)左、右子樹本身又都是一顆二叉排序樹。
首先要構造二叉排序樹,給定一組順序。。然後開始構造。
二叉排序樹的效率高於順序但低於二分。
後來發明了平衡二叉樹,讓樹變矮一些,效率高了一些。。
構造過程:
求每乙個結點的平衡因子,所有結點的平衡銀子為0,1,-1時,為平衡二叉樹
平衡因子: 左子樹高度減右子樹高度
(1)ll型
左 -> 左
旋轉
(2)lr型
左 -> 右
先變成ll 然後旋轉
(3)rr型
右->右
(4)rl型
邊建邊調整。
3 hash查詢(其實可以看成是一種動態查詢)
介紹一種不通過大量無效的比較,就能直接找到待查關鍵字的位置的查詢方法
基本術語:
1.hash方法:
在存放記錄時,通過相同函式計算儲存位置,並按此位置存放,這種方法成為hash方法。
2.hash函式:
指在hash方法中使用的函式。
3.hash表:
按hash方法構造出來的表稱為hash表。
通過hash函式計算記錄的儲存位置,我們把這個儲存位置稱為hash位址。
5.衝突:
不同記錄的關鍵字經過hash函式計算可能得到同一hash位址,即key1!=key2時,
h(key1)=h(key2)。這種現象叫做「衝突」。
對於hash方法需要討論三個問題:
(1)裝滿因子
(2)對於給定的乙個關鍵字集合,選擇乙個計算簡單且位址分布比較均勻的hash函式,避免或儘量減少衝突。
(3)擬訂解決衝突的方案。
構造hash函式的常用方法:
(1)直接定址法(重點)
hash(key) = a*key + b
(2)數字分析法
(3)除留取餘法(重點)
處理衝突的方法:
1.開放位址法
///待更新。。
資料結構第七章查詢
判斷題 1 1在雜湊中,函式 插入 和 查詢 具有同樣的時間複雜度。t 1 2當記錄個數小於雜湊表長度時,雜湊查詢平均查詢長度必然為0。f 1 3用向量和單鏈表表示的有序表均可使用折半查詢方法來提高查詢速度。f 1 4有n個數存放在一維陣列a 1 n 中,在進行順序查詢時,這n個數的排列有序或無序其...
資料結構 第七章 查詢技術
第七章 查詢技術 學習重點 1 折半查詢的過程及效能分析 2 二叉排序樹的插入,刪除和查詢操作 3 平衡二叉樹的調整方法 4 雜湊表的構造和查詢方法 5 各種查詢技術的時間效能及對比。學習難點 1 二叉排序樹的刪除操作 2 平衡二叉樹的調整方法 3 閒雜湊表的刪除演算法。7.1 概述 7.1.1 查...
資料結構 第七章 查詢技術
第七章 查詢技術 學習重點 1 折半查詢的過程及效能分析 2 二叉排序樹的插入,刪除和查詢操作 3 平衡二叉樹的調整方法 4 雜湊表的構造和查詢方法 5 各種查詢技術的時間效能及對比。學習難點 1 二叉排序樹的刪除操作 2 平衡二叉樹的調整方法 3 閒雜湊表的刪除演算法。7.1 概述 7.1.1 查...