王锐龙

导航

第七章学习小结

下面是第七章的知识梳理。

一、查找的基本概念:

(1)查找表查找表是由同一类型的数据元素(或记录)构成的集合。

(2)关键字关键字是数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。

(3)查找查找是指根据给定的某个值,在查找表中确定一个其关键字等于给定值得记录或数据元素。

(4)动态查找表和静态查找表若在查找的同时对表作修改操作(如插入和删除),则相应的表称之为动态查找表,否则称之为静态查找表。

(5)平均查找长度(ASL)为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值,成为查找算法在查找成功时的平均查找长度。

二、线性表

线性表查找方法:顺序查找、折半查找、分块查找。

顺序查找:1.适用于线性表的顺序存储结构,又适用于链式存储结构;

     2.时间复杂度O(n),空间复杂度O(1) 

     3.优点:算法简单,对表结构没有要求,且对记录是否按关键字有序均可应用

     4.缺点:平均查找长度较大,查找效率较低,n很大的时候不适合用

折半查找:1.线性表必须采用顺序存储结构,而且表中的元素按关键字有序排列;

     2.时间复杂度O(log2 n)

     3.在查找成功与否的情况下:和给定值进行比较的关键字个数最多也不超过向下取整的(log2 n )+1

     4.优点:比较次数少,查找效率高;

     5.缺点:对表的要求高,一定要是顺序存储,且关键字必须有序;费时:1.查找前排序;2.对有序表进行插入和删除的时候,平均比较和移动表中一半的元素

     6.折半查找不适用于数据元素经常变动的线性表

三、树表

树表的查找方法:二叉排序树、平衡二叉树、B-、B+树

①二叉排序树(二叉查找树):对排序和查找都很有用的特殊二叉树

二叉排序树的二叉链表存储的类型定义与树类似,此外,二叉排序树的查找、插入、创建等操作可以通过递归实现,删除操作较为复杂一点,要分情况:①被删除的结点是叶子结点(先找到存放该值的结点,指向该结点和其双亲的指针,判断是否为叶子结点)。②被删除的结点只有左子树或只有右子树。③被删除的结点有左子树和右子树。

折半查找长度为n的顺序表的判定数是唯一的,但含有n个结点的二叉树却不唯一。因此,含有n个结点的二叉排序树的平均查找长度和树的形态有关。较好情况下,时间复杂度为O(log2n),最坏情况下二叉排序树为单支树,时间复杂度为O(n)。

②平衡二叉树:保证搜索次数逼近log2n;

③B-树:解决平衡二叉树(当n很大时,高度很大)的局限性

④B+树:根据区间划分,实现区间查找。

四、散列表

(1)基本概念:

    散列函数和散列地址:在记录的存储位置p和其关键字key之间建立一个确定的对应关系H,使p=H(key),称这个对应关系H为散列函数,p为散列地址。
    散列表:一个有限连续的地址空间,用以存储按散列函数计算得到相应散列地址的数据记录。
    冲突和同义词:对不同的关键字可能得到同一散列地址,这种现象成为冲突。具有相同函数值的关键字对该散列函数来说称作同义词,key1和key2互称为同义词。
(2)散列函数的构造方法:

    数字分析法;平方取中法;折叠法;除留余数法 (假设散列表表长为m,选择一个不大于m的数p,用p去除关键字,除后所得余数为散列地址)

(3)处理冲突的办法

    开放地址法:线性探测法;二次探测法;伪随机探测法、链地址法

上周的目标算是达到了,自己好好钻研了下题目。下周的计划是好好复习准备迎接期末啦

posted on 2019-06-02 21:48  王锐龙  阅读(173)  评论(0编辑  收藏  举报