您的位置:首页 > 理论基础 > 数据结构算法

数据结构之查找算法总结笔记

2015-08-04 21:27 405 查看
查找算法

一、查找的基本概念
查找,也可称检索,是在大量的数据元素中找到某个特定的数据元素而进行的工作。查找是一种操作。

二、顺序查找
针对无序序列的一种最简单的查找方式。
时间复杂度为O(n)。

三、折半查找
针对已排序序列的一种查找方式。并且只适用于顺序存储结构的序列。要求序列中的元素基本不变,在需要做删除和插入操作的时候,会影响检索效率。
时间复杂度为O(logN)。

四、B树
B树又称二叉排序树(Binary Sort Tree)。
1、概念:
  它或者是一棵空树;或者是具有下列性质的二叉树:
  (1)若左子树不空,则左子树上所有结点的值均小于左子树所在树的根结点的值;
  (2)若右子树不空,则右子树上所有结点的值均大于右子树所在树的根结点的值;
  (3)左、右子树也分别为二叉排序树;
2、B树的查找:
时间复杂度与树的深度的有关。
  步骤:若根结点的关键字值等于查找的关键字,成功。
  否则:若小于根结点的关键字值,递归查左子树。
  若大于根结点的关键字值,递归查右子树。
  若子树为空,查找不成功。
3、B树的插入:
首先执行查找算法,找出被插结点的父亲结点。
  判断被插结点是其父亲结点的左儿子还是右儿子。将被插结点作为叶子结点插入。
  若二叉树为空。则首先单独生成根结点。
  注意:新插入的结点总是叶子结点,所以算法复杂度是O(h)。
4、B树的删除:
  如果删除的结点没有孩子,则删除后算法结束;
  如果删除的结点只有一个孩子,则删除后该孩子取代被删除结点的位置;
  如果删除的结点有两个孩子,则选择该结点的后继结点(该结点右孩子为根的树中的左子树中的值最小的点)作为新的根,同时在该后继结点开始,执行前两种删除算法,删除算法结束。

5、B+树
一棵m阶的B+树满足下列条件:
(1)每个结点最多m个孩子。
(2)除根结点和叶子结点外,其它每个结点至少有ém/2ù个孩子。
(3)根结点至少有两个孩子。
(4)所有的叶子结点在同一层,且包含了所有关键字信息。
(5)有k个孩子的分支结点包含k个关键字。
例如:



五、散列(hash)表
关键字:哈希函数、装填因子、冲突、同义词;

关键字和和存储的地址建立一个对应的关系:
Add = Hash(key);

解决冲突方法:
开放定址法 – 探测方式:线性探测、二次探测。
分离链接法 – 利用链表的方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  关键字 二叉树 元素