1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
散列函数.ppt

集合 与 词典检索;主要内容: ;;;;;;;SELECT * FROM Message ORDER BY Message.reID, Message.MessageID;;树的存储表示; struct ParTree { struct ParTreeNode nodelist[MAXNUM]; int n; }; typedef struct ParTree *PParTree; 优点: a)容易找到父结点及其所有的祖先; b)能找到结点的子女和兄弟; 缺点: a)没有表示出结点之间的左右次序; b)找结点的子女和兄弟比较费事。;2. 树的子表表示法; 1 ;子表表示的树结构定义如下: struct ChiTree /* 树结构 */ { struct ChiTreeNode nodelist[MAXNUM]; int root; /* 根结点的位置 */ int n; /* 结点的个数 */ } typedef struct ChiTree * PChiTree; 找子女和左兄弟容易;找父母和右兄弟难。;;加权路径和最小 - Huffman树; 利用优先队列 构造huffman树;;集合的基本概念;集合的抽象数据类型定义;集合的实现 —— 单链表;求单链表表示集合的交集 ;字典的基本概念;字典与查找表 —— 由一些具有相同可辨认特性的数据元素构成的集合。;Dictionary表示抽象数据类型字典, DicElement 表示字典元素类型, KeyType 表示元素中关键码的类型, Position 表示字典中元素的位置。;字典的顺序检索;字典的二分查找;二分查找算法:;二分法检索每经过一次比较就将检索范围缩小一半,第i次比较可能涉及的元素=2i -1。 二分法检索的最大检索长度为:log2(n+1) 算法复杂度:log2(n);散列表;例子:;散列函数基本要求:;散列函数示例;几种常见的hash函数 —— 除余法;常常有这样的情况,关键码位数比基本区的地址码位数多,这时可以对关键码的各位进行分析,丢掉分布不均匀的位留下均匀的位作为地址。 key h(key) 000319426 326 000718309 709 000629443 643 000758615 715 000919697 997 000310329 329 ;中平方法;碰撞的处理 —— 开地址法 Open Addressing ;开地址法 —— 线性探查 Linear Probing ;例子: clustering of linear probing ;typedef int KeyType; /*关键码子段类型*/ typedef int DataType; /*属性字段类型*/ typedef struct { KeyType key; /* 字典的关键码字段 */ DataType value; /* 字典的属性字段 */ }DicElement; ?typedef struct { int m; /* m为基本区域长度 */ DicElement *element; } HashDictionary; /*DicElement是字典中元素类型*/ ;散列表的检索算法 — 用线性探查法解决碰撞 ;散列表的插入算法 — 用线性探查法解决碰撞;开地址法 —— 平方探查 Quadratic Probing;开地址法 —— 双散列函数法;散列表元素的删除;拉链法 ;散列文件;作业:

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档