第9章:検索
静的ルックアップテーブル:
1.テーブルルックアップの順序:シーケンシャル検索
背面から楽しみにして、0手段がセンチネルに配置されました
これは、シーケンステーブルの形や線形リストに格納されます
アルゴリズム検索平均の長さの検索が成功を見つけることが失敗したとき=平均長さ+時間の平均の長さを
失敗した長さの配列を見つける:各要素の長さが(N + 1)失敗した、すなわち、実際には、(N + 1)回のキーワードを有する各時間比較的成功しています
シーケンシャルサーチの平均長さがある:3 *(N + 1) / 4
バイナリ検索:ソートされたリストを表示して下さい
順次ストレージ構造に限定されず、ソートされたリストであります
低い初期値、ゼロ歩哨手段、配列の長さ、高
検索平均長の成功にされています。
3.テーブルのルックアップインデックス順:ブロック検索
また、ブロック探索としても知られている索引逐次探索は、(順次の改良された方法を見つけること)に加えて、テーブル自体は、キー項目とポインタ項目を含む外部インデックステーブルを作成する必要があります。
ドラム
ダイナミックなルックアップテーブル:
テーブル構造自体は、動的に発見処理で生成されます。キーの与えられた値については、そのキーワードまたは同等のキーレコードには、テーブル内のそれ以外のキーレコードと同じキーの挿入に成功リターンのために、見て、存在する場合。
1.バイナリ・ソートツリー:
バイナリソートツリーまたは空の木;又は以下の特性を有する二分木。
その左の部分木が空でない場合(1)、次に、すべてのノードは以下の左サブツリーの値であるルート値。
それは右のサブツリーを空でない場合(2)は、全てのノードの値の右サブツリーがより大きいルート値;
(3)その左と右のサブツリーもバイナリ・ソートツリーです。
バイナリリストを用いて格納されている、すなわち、各ノードは、子ノードポインタフィールドに関するデータを含みます
トラバーサル順序どおりバイナリ・ソートツリーの大順序付けられたシーケンスに小さなから入手することができます!
2.バイナリツリーをバランス:
平衡二叉树又称AVL树,它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。
定义平衡因子:平衡因子=|左子树深度-右子树深度|《1
平均查找长度:
它的深度和log2 n是同数量级的, 由此,它的平均查找长度 也和log2 n 同数量级。
查找的时间复杂度:O(logn)
查找小窍门:
假设由于在二叉排序树上插入结点而失去平衡的最小子树根结点的指针为a,即a是离插入点最近且平衡因子绝对值超过1的祖先结点:
将离插入点最近且从0变到绝对值为1的点移到a的位置。
3.B-树:
一棵m阶的B-树,或为空树,或为满足下列特性的m叉树:
(1) 所有的非终端结点中包含下列信息数据 (n,A0,K1, A1,K2,A2,…, Kn,An) 其中:n—关键字个数(「m/2]-1<=n<=m-1). Ki(i=1,2,…,n): 关键字,且ki<ki+1(i=1,2,…,n-1); Ai(i=1,2,…,n): 指向子树根结点的指针,且指针Ai-1所指子树中所有结点的关键字均小于ki(i=1,2,…,n-1), Ai+1所指子树中所有结点的关键字均大于ki.
(2) 树中每个结点至多有m棵子树,即结点中的关键字个数<=m-1;
(3) 若根结点不是叶子结点,则至少有两棵子树;
(4) 除根之外的所有非终端结点至少有m/2(往上取)棵子树;
(5)所有的叶子结点都出现在同一层次上,并且不带信息。
B-树在文件系统中很有用,是大型数据库文件的一种组织结构。
4.B+树:
5.哈希表:
解决冲突的办法:
哈希表的查找:
用开放定址法解决冲突(即除了链地址法的冲突解决办法)
哈希表分析:
α=n/m 值的大小(n—记录数,m—表的长度) α越大,添入表中的元素较多,产生冲突的可能性就越大;α越小,添入表中的元素较少,产生冲突的可能性就越小。
哈希表查找成功和失败的平均查找长度:
线性探测在散列在处理冲突的过程中易产生记录的二次聚集,而链地址法处理冲突时不会发生类似情况,故其平均查找长度较优。
查找成功有如下结果:
由此可知,平均查找长度跟n无关而是跟装填因子a有关。
用哈希表构造查找表时,可以选择一个适当的装填因子 a ,使得平均查找长度限定在某个范围内。