• 第七章学习小结


      本章学习的是数据查找。个人感觉这一章的知识相比于之前的章节更加贴切实际操作。

      目录:

      (一) 查找的基本概念

      (1)查找表

      查找表是由同一类型的数据元素(或记录)构成的集合,它是一种非常灵变的数据结构,涉及的数据结构主要有线性表,树表以及散列表。

      (2)关键字

      关键字是数据元素(或记录)中某个数据项的值,可以标识一个数据元素。关键字又分两种,可以唯一标识一个记录的关键字被称为主关键字;可以识别若干记录的关键字被称为次关键字。

      (3)查找

      查找是指根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或者数据元素。若存在这样一个记录,则称为查找成功;若不存在这样一个记录,则称为查找失败。

      (4)查找表的种类

      查找表分为动态查找表和静态查找表。在查找的同时进行插入和删除工作的叫做动态查找表,反之则称为静态查找表。

      (5)平均查找长度

      平均查找长度简称ASL,是和给定值进行比较的关键字个数的期望值。

      

      (二)线性表的查找

      (1)顺序查找

      从表的一段开始,依次将记录的关键字和给定值进行比较,既适用于线性表的线性储存结构,又适用于线性表的练市存储结构,改良后的算法加入监视哨,将str[0]置为key。ASL = (n+1)/ 2

      (2)折半查找

      采用该方法有一下几点前提:

      (i)必须采用数据顺序存储结构

      (ii)表中元素按照关键字有序排列

      折半查找法在每一次查找都会使查找范围缩小一半,提高了查找的效率。下图为折半查找方法的查找过程(找21):

    ASL = log2(n) (注意是有序查找)

    (三)树表的查找

      (1)二叉排序树(又称二叉查找树)

      定义如下:

      (i)若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值。

      (ii)若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值。

      (iii)它的左右子树也分别为二叉排序树

      然后对二叉排序树的操作主要有查找,插入,创建和删除。

      其中,查找,插入和创建均可以通过递归来实现,这四种操作中最难的是删除,删除又分三种情况:

      (i)f -> lchild = NULL 左右子树均为空树

        (ii)  f -> lchild = p -> lchild  一边为空树

        (iii) f ->lchild = p ->lchild; s ->rchild = p ->rchild (或者 p -> data = s ->data; q ->rchild = s ->lchild)  左右子树均不为空树

      (2)平衡二叉树(改良版的二叉排序树)

      先明白一个定义:平衡因子是该结点左子树和右子树的深度之差,取值可能是-1,0, 1。

      有以下特点:

      (i)左子树和右子树的深度之差的绝对值不超过1。

      (ii)左子树和右子树也是平衡二叉树。

      后面的B-树,B+树还有散列表还没有吃透,个人觉得还是有点难度的。

      网安的进度渐渐地赶上了。

      最近期末的时间开始有点紧张了,而且又要开始复习了,希望下一阶段可以安排好自己的学习时间,认真复习,保住绩点!

  • 相关阅读:
    IE9发布会,有想去的联系我,有赠票(3月21日,周一)
    HTML5时代的浏览器全面测试
    CTO门的windows 7 要不要买?是不是正版?
    约束与索引
    Linux关机命令详解
    CSS XSLT
    xml xslt中的空格输出处理
    Jmeter笔记(15)随机取 用户定义的变量
    $.getJSON不执行的原因
    更改eclipse中java和jsp文件字体的大小
  • 原文地址:https://www.cnblogs.com/Buki11/p/10964182.html
Copyright © 2020-2023  润新知