<1>查找基础知识(无代码)

1、顺序查找:从第一个记录挨着向后查找,直到找到与给定关键字相同的记录,否接查找不成功。(可以在数组头设置一个与key相同的a[0],从后向前查找) O(n)

 

2、折半查找:需要线性表有序。O(logn)

 

3、插值查找:相对于折半查找,可以折1/4或更多。O(logn)

 

4、斐波那契查找:相对于折半查找,利用黄金分割原理实现。利用斐波那契数列选择相应的查找点。O(logn)

 

5、稠密索引:每一个索引项(关键字和对应记录的位置)对应一个数据集中每一个记录。索引项。索引项要根据关键字排序

 

6、分块索引:将数据集分块,对每一块对应一个索引项,块索引(块中最大关键字,块中数据个数,块中第一个数据地址指针)需要有序。

 

7、倒排索引:索引项是次关键码(有序)和纪录号表(可以是主关键码或数据位置指针)。

 

8、二叉排序树:左子树都比父节点小,右子树都比父节点大。

              二叉排序树的查找(递归,比父节点大查找右子树,父节点小查找左子树)。(最大查找次数是树的深度)

              二叉排序树的插入(递归,比父节点大插入右子树,比父节点小插入左子树)。

              二叉排序树的删除

                     删除叶子结点(查找到之后可以直接删除)。

                     删除的节点只有左子树或右子树(子承父业,与父节点相连的子结点到父节点的位置)。

                     删除的节点有左子树也有右子树(中序遍历中的该结点的前趋或后继继承)。

 

9、平衡二叉树(AVL树),原因是,在构造二叉排序树的时候可能构造成左斜树或右斜树,导致查找效率降低。(查找复杂度O(logn),插入和删除的复杂度O(logn))

       最小不平衡树是距离插入结点最近且平衡因子(左子树深度减右子树深度)大于1的子树。

 

10、平衡二叉树的构造

              找到最小不平衡数的根节点,当BF(平衡因子)大于1并且与子节点BF符号相同,右旋。

              当BF小于-1并且与子节点BF符号相同时,左旋。(在旋转时要满足二叉排序树的特性)。

              如果BF符号不统一,先进行旋转后统一符号,再进行相应的反向旋转。

 

11、多路查找树(结点中元素不止一个,子树可以有多棵):2-3树,2-3-4树,B树,B+树…(没仔细看,感觉很麻烦^_^)。

      

12、哈希表查找:存储位置= f(关键字)-----散列函数(Hash函数)    (适合数据和存储位置一对一关系的)

              根据Hash函数计算出数据应存的散列地址,并对应存储。

              在查找是通过Hash函数计算出关键字的散列地址,然后访问散列地址对应的数据。

 

13、散列冲突(key1≠ key2,但是f(key1)= f(key2)),可以将有冲突的数据存在一个单链表中。还可以把有散列冲突的数据放在公共溢出区。

12

67

16

25

37

22

 

经过散列函数计算之后存储(比数据区大)

0

1

2

3

4

5

6

7

12

25

 

 

16

 

 

67

37、22可以通过计算用单链表的形式加入、也可以进入公共溢出区、也可以进行探索填入到Hash表中空的位置。在查找是根据地址直接查数据,O(1)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值