码迷,mamicode.com
首页 > 其他好文 > 详细

第七章学习小结

时间:2019-06-03 00:30:29      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:类型   通过   难度   这一   目录   info   散列   顺序存储   b+树   

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

  目录:

  (一) 查找的基本概念

  (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+树还有散列表还没有吃透,个人觉得还是有点难度的。

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

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

第七章学习小结

标签:类型   通过   难度   这一   目录   info   散列   顺序存储   b+树   

原文地址:https://www.cnblogs.com/Buki11/p/10964182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!