一、靜態查詢
有序表查詢 平均查詢長度: 特點
1、折半查詢 log(n+1)-1 只是適用於有序表,且限於順序儲存結構(線性鍊錶無法進行折半查詢。
2、斐波那契查詢 o(logn) 平均效能比折半好,但最壞效能比折半差 分割時只需進行加減運算,
適用於關鍵字均勻分布的表 對錶長較大的順序表,其效能比折半好
3、索引順序表查詢
二、動態查詢
1、二叉排序樹
左子樹的值小於右子樹的值(左小右大);
二叉鍊錶作為二叉排序樹的儲存結構;
插入的節點一定是葉子節點;
二叉排序樹的中序遍歷就是乙個有序序列;
二叉排序樹既有類似於折半查詢的特性,又採用了鍊錶儲存結構,因此是動態查詢表的一種適宜表示;
當刪除節點時有兩種刪除方法,詳見p230
折半查詢的長度為n的表的判斷樹是唯一的,而含有n各節點的二叉樹的排序卻不唯一,查詢長度與樹的結構有關係。
平均查詢長度也是o(logn)
2、平衡二叉樹
1、左子樹和右子樹都是平衡二叉樹,且左子樹和右子樹的深度只差的絕對值不超過1;
平均查詢長度也是o(logn);
3、b-樹b+樹
4、鍵樹(數字查詢樹)
5、雜湊表
1、直接定址法 所得位址集合和關鍵字集合大小相同,因此,對於不同的關鍵字不會發生衝突,但實際中應用很少;
2、數字分析法
3、平法取中法 取關鍵字平方後的中間幾位為雜湊位址;
4、摺疊法 將關鍵字分割成位數相同的幾部分,然後取這幾部分的疊加和(捨去進製)作為雜湊位址;
5、除留餘數法 這是一種最簡單也是最常用的方法
6、隨機數法 當關鍵字長度不等時採用此法比較恰當
處理衝突的方法:
1、開放定址法
2、在雜湊法
3、鏈位址法
4、建立乙個公共溢位區
雜湊表的裝填因子 a = 表中填入的記錄數n/雜湊表的長度m
雜湊表的平均查詢長度是a的函式,而不是n的函式,因此不管n多大,我們總可以選擇乙個合適的裝填因子以便將平均查詢長度限定在乙個範圍內。
資料結構之查詢
date 08 07 11 descript 折半查詢,插入跟刪除演算法 public class binaryinsertex extends seqlist public binaryinsertex int n public void create catch exception ex pub...
資料結構之查詢
1.折半查詢只能用於有序資料,且是順序儲存結構 實質是用了陣列的下標的折半 2.折半查詢效率是比較高的,但折半查詢必須是順序儲存結構,為了能讓鏈式儲存結構也能用這樣的模式,就引出了平衡二叉樹,他的效率在順序查詢和折半查詢之間 3.b 樹主要用於檔案資料儲存,也就是外存,因為外存的訪問速度慢,為減少訪...
資料結構之查詢
1 搜尋 最簡單的使用 in 運算子 15in 3,5,2,4,1 false2 順序查詢 複雜度是 o n 試想,當查詢的專案不存在列表中時,無序查詢的話最好 最差 平均情況都是n次,但有序查詢就不一樣了,最好的情況是1次,最差n次,平均n 2次對吧。3 二分查詢 複雜度是 o log n def...