• 数据结构:第七章学习小结


     二、实例

    1、无序和有序情况下,ASL的不同

     2、分块查找中,索引表示如何建立的

     3、判断二叉树是否是AVL树

     如果不是AVL树,要分情况进行调整: LL, RR, LR, RL

    4、用线性探测再散列处理和二次探测再散列冲突,并求ASL

     ASL = (1*4 + 2*2 + 3 + 6 + 5)/ 9

    心得体会:

    发现代码的实现能力和对知识的掌握,在一定程度上,是不成正比的。薄弱的基础导致了在完成编程作业时很吃力,在不断地提交的过程中,不断修改,从中分析自己的代码,又或是通过查询,学习他人的方法,虽然最后还是没能够满分提交,但是在这个过程中,也能学到已经没有掌握的知识。挫败感虽有,但是更有前进的动力。

    在不断的深入学习这种,难度在不断提高,对知识的掌握能力也有着很高的要求。我觉得在这过程中,对于我来说,最好的方法就是跟着不断思考,动手去完成课堂或课后的题目,不要得过且过。

    (担心思维导图看不清,以下是文字版)

     1 线性表的查找
     2     顺序查找
     3         方法:把待查关键字key存入表头(作哨兵),从后向前逐个比较,可免去查找过程中每一步都要检测是否查找完毕,加快速度
     4         只用比较N次
     5         有序和无序的ASL不同,无序中每个元素查找概率不同。
     6         N很大时,不适宜
     7     折半查找(二分查找)
     8         设表长为n, low, high,mid分别指向待查元素所在区间的上界、下界和中点,K为给定值;判断所要查找的元素是否与mid所在关键字相等。
     9         性能分析:每次查找时间都缩小一半,时间复杂度O(log2N)
    10         局限:
    11             基于顺序表存储,且一定要有序
    12             适合一次排序,多次查找。因此针对静态数组
    13             数据量太小,不需要二分
    14             数据量太大,不能用。因为二分数据需要数组来存储,而数组的内存空间必须是连续的,找不到存储如此大规模数据的连续内存空间
    15     分块查找
    16         即分成若干子表,要求每个子表中的数值都比一块中数值小(但子表内未必有序)。然后将各子表中的最大关键字构成一个索引表,表中还要包含每个子表的起始地址(即头指针)
    17         块间有序,块内无序
    18         适用情况:线性表既要快速查找又经常动态变化,则可采用分块查找
    19         优点:易于插入和删除,无需进行大量移动
    20         缺点:要增加一个索引表的存储空间并对初始索引表进行排序运算
    21 
    22 树表查找
    23     二叉排序树
    24         可以看作是一个有序表
    25         适合深度小
    26     平衡二叉树
    27         所有结点的左、右子shu深度之差的绝对值<=1
    28         平衡因子:左右子树高度差
    29         要不断调整平衡,调整最小不平衡子树
    30 
    31 散列表的查找
    32     直接算出位置,与数据量无关
    33         记录在数组中的存储位置P与其关键字key之间存在对应关系:H(key) = P
    34         H函数称为哈希函数
    35         优点:查找速度极快O(1),与元素个数无关
    36         相关术语
    37             散列函数:转换函数,将关键字转换为位置(下标)
    38             散列表
    39             冲突:不同的关键字映射到同一个散列地址
    40                 冲突解决:开放地址法
    41                     线性探测再散列
    42                     二次(平方)探测再散列
    43                     随机探测再散列
    44                 链地址法:将相同散列地址的链成一个单链表,适合表长不定
    45             同义词:H函数相等的关键字
    46             除留余数法:所选P要小于表长的最大质数
    47 
    48 基本概念
    49     查找表:
    50         同一类型的数据元素构成的集合
    51     关键字:
    52         数据元素中某个数据项的值
    53         只存储关键字的意义其实并不大,还要记录地址/在表中的序号
    54     查找
    55         动态查找
    56             查找的同时,需要对表进行修改操作(如插入/删除)
    57         静态查找
    58     平均查找长度(ASL)
    59         取决于
    60             散列函数
    61             处理冲突的方法
    62             散列表的填装因子 = M / S( M = 元素个数,S = 数组的长度)
    思维导图文字版
  • 相关阅读:
    Ubuntu中root用户和user用户的相互切换
    MVCC
    vs2010和C#4.0
    使用命令选项连接到MySQL服务器(参考MySQL官方文档)
    使用外部数据源连接WIN版本的MySQL时,测试连接无法通过
    MySQL学习进阶路线
    解决linux(centos7)重新安装mysql systemctl start mysqld.service时报错
    最最完整的 MySQL 规范都在这了
    Linux性能测试与调优的15条常用命令
    (转载)libevent源码深度剖析二
  • 原文地址:https://www.cnblogs.com/zhongjingyi/p/13200741.html
Copyright © 2020-2023  润新知