数据结构(八)查找

来源:互联网 发布:天猫和淘宝什么关系 编辑:程序博客网 时间:2024/06/14 11:11

未完待续


查找表
关键字
主关键字:可以唯一地标识一个记录。
次关键字:可以标识多个数据元素。

查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。

查找表分为静态查找表动态查找表

顺序表查找:逐个查找,最直接直观的查找方法。
设置哨兵:如果用for循环来实现顺序表查找,每次都需要对i是否越界进行判断,这个时候可以设置一个哨兵,当当前值不等于要查找的值,继续自增,知道相等,打印i。

有序表查找
折半查找(二分查找):
插值查找:与折半查找相比,mid的计算方法不同,公式为mid = low + (high - low)*(key - a[low])/(a[high] - a[low])
斐波那契查找:利用黄金分割原理来实现,计算斐波那契数列并将数值补全,若查找值小于a[mid],则k-1,若查找值大于a[mid],则k-2。计算公式:mid = low + F[k -1] -1。

稠密索引:主关键字按照顺序排序,后面跟着数据的地址。
分块索引:块间有序,块内无序。
倒排索引:次关键码和记录号表。

二叉排序树
定义:若它的左子树不空,则左子树上所有结点均小于他的根结构的值。
若右子树不空,则右子树所有结点的值均大于他的根结点的值。
在新增删除值需对树做调整。

平衡二叉树
每一个节点的左子树和右子树的高度差至多等于1.
BF:左子树深度减去右子树深度的值称为平衡因子。

多路查找树(B树)
2-3树
2-3-4树
B树:可以有很多阶,2-3树是和2-3-4是他的特例。
B+树:增加对兄弟结点的指向。

散列表(哈希表)查找
要求:计算简单并且分布均匀

  1. 直接定址法
  2. 数字分析法
  3. 平方取中法
  4. 折叠法
  5. 除留余数法
  6. 随机数法

处理冲突的方法:
开放定址法
再散列函数法
链地址法

原创粉丝点击