静态查找算法:对表中的记录只进行查找操作
顺序查找:
时间复杂度:O(n)
优点:对数据集合中元素的有序性、存储结构都没有任何要求
缺点:查找效率低
二分查找:
时间复杂度:O(logn)
优点:查找效率高
缺点:要求数据集合中的元素是顺序存储且有序的
分块查找:
将主表分成若干个子表,为每个子表建立一个索引值,组成一个索引表,索引表要求是有序的。查找分为两个过程:首先对索引表进行二分查找,然后对子表进行顺序查找
“分块有序”:主表中的前一个子表中的最大关键字必须小于后一个子表中的最小关键字
动态查找算法:对表中的记录进行查找、插入、删除操作
二叉排序树:
或者是一棵空树;或者:若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不为空,则右子树上所有结点的值均大于根结点的值;左右子树也均为二叉排序树
时间复杂度:最坏情况:O(n);平均情况:O(logn)
缺点:可能出现二叉排序树是一棵单分支退化树的情况,可以采用平衡二叉树(AVL树)
B-树:
一棵m(m>=3)阶的B-树,或者是一棵空树,或者满足下列几个特性:
1)树中每个结点之多有m个孩子结点;
2)若根结点不是叶子结点,则根结点至少有两个孩子结点;
3)除根结点外,其它结点至少有[m/2]个孩子结点;([m/2]是指大于或等于m/2的最小整数);
4)每个节点的关键字的个数等于孩子结点个数减1;
5)所有叶子结点都在同一层上。
B+树:
一棵m阶的B+树和一棵m阶的B-树的差别:
1)在B-树中,结点的关键字数比孩子结点数少一个;在B+树中,结点的每个关键字对应一个孩子结点;
2)B+树中的所有叶子结点包含了所有的关键字,所有叶子结点按关键字从小到大的顺序依次链接;
3)B+树中通常有两个头指针,一个指向根结点,另一个指向含有最小关键字的叶子结点
哈希表:通过哈希函数来确定表中数据元素的存储位置
构造哈希函数:1,直接定址法;2,除数留余法;3,数字分析法;4,平方取中法;5,折叠移位法
解决哈希冲突:1,开放定址法;2,链地址法
装填因子:哈希表中已装入数据元素的个数与哈希地址空间大小的比值
优点:在查找过程中所需的比较次数很少
缺点:哈希表占用的存储空间较多;在哈希表中只能按关键字查找元素;数据元素之间的原有逻辑关系无法在哈希表中体现出来