数据结构--查找--知识点总结

数据结构–搜索–总结


1.(基础要点) 查找的基本概念

  • 查找:就是在数据集合中寻找满足某种条件的数据对象。
  • 关键码:在每个对象中有若干属性,其中有一个属性,其值可唯一地标识这个对象,称为关键码。
  • 静态搜索:搜索结构在插入和删除等操作的前后不发生改变。
  • 动态搜索:为保持高的搜索效率,搜索结构在执行插入和删除等操作的前后将自动进行调整,结构可能发生变化。
  • 静态:有序查找、折半查找、斐波那契搜索
  • 动态:有序查找、折半(跳表)、非线性-树

2.(基础要点) 顺序查找、二分查找、分块查找

2.1 顺序查找

2.2 二分查找

  • 基本思路:设R[low,high]是当前的查找区间,首先确定该区间的中间位置mid=(low+high)/2,然后将待查的k值与R[mid]比较,若相等,则查找成功,返回该位置。否则需要确定新的查找区间。若R[mid]>k,则新的查找区间为[low,…,mid-1],类似地,若R[mid]

2.3 分块查找

又称索引顺序查找。

3.(⭐⭐) 二叉排序树、平衡二叉树、伸展树、红黑树

3.1 二叉搜索树

  • 二叉搜索树(Binary Search Tree)定义:二叉搜索树或者是空树,或者是满足以下性质的二叉树:
    若它的左子树不空,则左子树上所有关键字的值均小于根关键字的值。
    若它的右子树不空,则右子树上所有关键字的值均大于根关键字的值。
    左右子树又各是一棵二叉排序树。
  • 二叉搜索树操作

    • 查找
    • 插入
    • 删除:叶子结点直接删除;右子树空用左子女顶替;左子树空用右子女顶替;左右子树都非空在右子树上找中序下第一个结点填补。
  • 二叉搜索树性能分析

3.2 平衡二叉树

  • 平衡二叉树(AVL树):一种特殊的二叉排序树,左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1.
    (先发明的二叉排序树,实现了较高的查找效率。后来发现基于这种查找方法,树越矮查找效率越高)
  • 平衡因子:该结点右子树的高度减去左子树的高度所得的高度差,称为平衡因子。

  • AVL树操作

    • AVL树的平衡化(耐心搞清楚,一点都不难)
      这里写图片描述
    • AVL树的插入、删除
      这里写图片描述
      这里写图片描述
      这里写图片描述
      这里写图片描述
      这里写图片描述

3.3 伸展树

  • 伸展树(Splaying Tree)是另一种提高搜索效率的方法,主要考虑的因素是结点被访问的频率。其思路是:每当访问(搜索、插入、删除)一个结点s时,伸展树就执行一次“展开”,将结点s移到二叉搜索树的根部。

  • 伸展树操作:搜索

3.4 红黑树

4.(⭐) B-树、B+树

4.1 B树

  • B树基本概念
  • 这里写图片描述
    这里写图片描述
    这里写图片描述
  • B树基本操作
    这里写图片描述
    这里写图片描述

4.1 B+树

B+树是B-树的一种变形。
B+树和B-树的区别:
1)分支数:B+树n个关键字的结点有n个分支;B-树n个关键字的结点有n+1个分支。
2)关键字个数:
3)叶节点是否包含信息:B+树叶子结点包含信息
4)B+树中非叶子结点仅起一个索引的作用
5)。。

5.(⭐⭐⭐) 散列表

根据给定的关键字来计算出关键字在表中的地址。
散列中最重要的两部分: 确定散列函数,以及解决冲突问题

5.1 确定散列函数

5.2 解决冲突

解决冲突:当一个元素要插入时,此前已有插入的元素散列,那么就会产生一个冲突,这个冲突必须要消除。解决冲突有两种方法:开放定址法、分离链接法
开放定址法(包含线性探測,平方探測,双散列等)
分离链接法:将散列到同一个值的全部元素保留到一个链表中

6.(⭐⭐⭐) 查找算法的分析及应用

猜你喜欢

转载自blog.csdn.net/void_worker/article/details/80737765
今日推荐