• 第13周 查找


    查找的基本概念
    列表:由同一类型的数据元素(或记录)构成的集合,可利用任意数据结构实现。

    关键字:数据元素的某个数据项的值,用它可以标识列表中的一个或一组数据元素。

    • 关键字:惟一标识列表中的一个数据元素
    • 关键字:不是主关键字,就为次关键字
    • 当数据元素仅有一个数据项时,数据元素的值就是关键字
    查找:根据给定的关键字值,在特定的列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。
    • 静态查找:在查找过程中只是对数据元素进行查找
    • 动态查找:在实现查找的同时,插入找不到的元素,或从查找表中删除已查到的某个元素。
    平均查找长度(ASL):为确定数据元素在列表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。

    查找的基本方法

    1. 比较式查找法 —— (1)基于线性表的查找 (2)基于树的查找法

    2. 计算式查找法 —— HASH(哈希)查找法

    基于线性表的查找法 —— 顺序查找法;折半查找法

    顺序查找法

    若列表长度为 n,查找从最后一个元素开始找起,查找每个数据元素的概率相等,

    则顺序查找算法的平均查找长度为:ASL=(n + 1)/ 2  (从首元素开始同样)

    若查找第 i 个元素,需进行(n - i + 1)次比较。

    折半查找法

    前提条件:

    • 必须采用顺序储存结构
    • 必须按关键字大小有序排列

    基于树的查找法 —— 二叉排序树;平衡二叉树

    二叉排序树

    • 若它的左子树非空,则左子树上所有结点的值均小于它的根结点的值;

    • 若它的右子树非空,则右子树上所有结点的值均大于(或大于等于)它的根结点的值;
    • 它的左、右子树也分别为二叉排序树

    插入:

    • 若二叉树是空树,则 S 成为二叉排序树的根;

    • 若二叉树非空,则将 S.key 与二叉排序树根结点的关键字进行比较:

                          if(key的值等于根结点的值),则停止插入;

                       else if(key的值小于根结点的值), 则将S插入左子树;

                       else if(key的值大于根结点的值), 则将S插入右子树。

    查找:

    首先将待查关键字 key 与根结点关键字 t 进行比较,如果:
    • key=t: 则返回根结点地址;

    • key<t: 则进一步查左子树;

    • key>t: 则进一步查右子树。

    平衡二叉排序树

    • 左子树与右子树的深度之差的绝对值小于等于1

    • 左子树和右子树也是平衡二叉排序树;

  • 相关阅读:
    How to upload a file in MVC4
    安装升级System.Web.Optimization.dll
    Model Binding To A List
    TD中{text-overflow:ellipsis;} 用法
    表格
    CSS定位
    清除浮动的几种方式
    css浮动原理和特性
    前端规范
    块元素和内嵌元素
  • 原文地址:https://www.cnblogs.com/lin2001/p/13025885.html
Copyright © 2020-2023  润新知