数据结构与STL_第7章_查找概要.ppt

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

散列查找的性能分析 影响冲突的因素 1)散列函数是否均匀 2)处理冲突的方法 3)散列函数的装填因子a a越大代表填入表中的记录越多,则产生冲突的可能性就越大。 * * a= 填入表中的记录个数 散列表的长度 《数据结构与STL》 开散列和闭散列 开散列 采用链式方式存储同义词,不产生堆积现象。查找. 插入. 删除易于实现,但附加指针增加了存储空间。 闭散列 采用顺序方式,存储效率高,但容易产生堆积现象。 * * 《数据结构与STL》 第七章 查找 学习内容: 1. 概述 2. 线性表的查找技术 3. 树表的查找技术 4. 散列表的查找技术 5. 查找的应用 6. STL中的相关模版类 * 《数据结构与STL》 5. 查找的应用 * 平衡二叉树 主要内容 1. 定义 2. 构造平衡二叉树 3. 性能分析 * 《数据结构与STL》 平衡二叉树 定义 二叉平衡树或者是一棵空树;或者是具有如下特性的二叉树: 1. 它的左. 右子树都是平衡二叉树; 2. 它的左. 右子树的高度之差的绝对值小于1。 注意 本章讨论的平衡二叉树是指平衡的二叉排序树。 * 《数据结构与STL》 1. 平衡二叉树 * 6 4 8 2 6 4 8 2 1 5 是平衡树 不是平衡树 《数据结构与STL》 * 平衡二叉树 平衡因子 结点的平衡因子=左子树高度-右子树高度 平衡二叉树的平衡因子为-1. 0. 1。 如果在建立排序二叉树的同时,保证其为平衡二叉树,则可避免查找的时间复杂度由O(logn)退化成O(n)。 * 《数据结构与STL》 * 第七章 查找 学习内容: 1. 概述 2. 线性表的查找技术 3. 树表的查找技术 4. 散列表的查找技术 5. 查找的应用 6. STL中的相关模版类 * 《数据结构与STL》 4. 散列表的查找技术 * 散列的查找技术 主要内容 1.什么是散列技术? 2.散列函数的设计 * * 《数据结构与STL》 1.什么是散列技术? 什么是查找? 确定关键码=给定值的记录在集合中的查找集合中的存储位置。 由于存储位置与关键码之间不存在确定的对应关系,因此,查找时必须通过一系列与关键码的比较。 顺序查找、二分查找、二叉排序树、B-树查找。 散列技术,改善时间复杂度, 由O(log2(n))+O(1)?O(1) * * 不通过比较,直接定位待查记录的存储位置? 《数据结构与STL》 * * 使用散列技术,使结点在表中的位置和该结点的关键字存在确定关系。 (理想情况)不进行比较。 影碟出租商店的例子: 1万张影碟,用7位电话号码做关键字。 7位表示1千万个编码。 最多的情况1万个记录位置足够。 如何将7位号码影射到1万个地址…… 1.什么是散列技术? 理想情况 在记录的存储位置和其关键码之间建立一个确定的对应关系H,使得每个关键码key和唯一的一个存储位置H(key)对应。 key ? 关键码 H(key) ? 存储位置 这就是散列技术,采用散列技术将记录存储在一块连续的存储空间中,就是散列表。 * * 《数据结构与STL》 1.什么是散列技术? 散列过程 1)存储记录 通过H(key)计算记录的散列地址,并按此地址存储记录 2)查找记录 通过同样的H(key)计算记录的散列地址,按此地址访问该记录。 散列不能表达记录之间的逻辑关系,所以是不完整的存储结构,主要面向查找的存储结构 * * 《数据结构与STL》 1.什么是散列技术? 1.散列函数的设计 理想情况: key ? 关键码 H(key) ? 存储位置 实际情况: key1 != key2 但 H(key1) = H(key2) 2.冲突处理 * * 《数据结构与STL》 2. 散列函数的设计 常用的五种方法: 1) 直接定址法 2) 除留余数法 3) 数字分析法 4) 平方取中法 5) 折叠法 * * 《数据结构与STL》 1) 直接定址法 哈希函数: h(key) = a*key + b 特点: 计算简单,没有冲突;适合于关键码分布比较连续的情况;否则空间浪费较多。 * * 下标 01 02 03 … 25 26 … 100 年龄 1 2 3 … 25 26 … 100 人数 35 23 15 … 56 47 … 0 人口统计表

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档