zoukankan      html  css  js  c++  java
  • 第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

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

  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/lin2001/p/13025885.html
Copyright © 2011-2022 走看看