数据结构与算法分析课件第8章剖析

上传人:我** 文档编号:115171095 上传时间:2019-11-12 格式:PPT 页数:17 大小:235KB
返回 下载 相关 举报
数据结构与算法分析课件第8章剖析_第1页
第1页 / 共17页
数据结构与算法分析课件第8章剖析_第2页
第2页 / 共17页
数据结构与算法分析课件第8章剖析_第3页
第3页 / 共17页
数据结构与算法分析课件第8章剖析_第4页
第4页 / 共17页
数据结构与算法分析课件第8章剖析_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《数据结构与算法分析课件第8章剖析》由会员分享,可在线阅读,更多相关《数据结构与算法分析课件第8章剖析(17页珍藏版)》请在金锄头文库上搜索。

1、数据结构与算法分析 A Practical Introduction to Data Structures and Algorithm Analysis 陈 星,第8章 文件管理和外排序,外排序:因数据量太大,不能将它们同时放在主存中。因此需要将全部数据放入磁盘,每次选择部分数据到主存进行处理。 8.1 主存储器和辅助存储器 主存储器:随机访问存储器(RAM)。 辅助存储器:硬盘、软盘和磁带等。,主存储器和辅助存储器的比较,尽可能减小对磁盘的访问次数,原则,减小磁盘访问次数的方法,尽可能少(最好一次)的访问次数得到所需数据。 每次磁盘访问得到更多的数据,减少将来的访问需要。 一种实用的方法:压

2、缩存储存储在磁盘中的信息。 原理: 用增加的CPU时间(压缩和解压数据)换 取缩短的磁盘访问时间。 问题:不允许随机访问被压缩文件的一部分。,8.2 磁盘,磁盘:直接访问存储设备。磁带:顺序访问存储设备。 盘片、磁道、柱面、扇区 盘片以恒定速率转动,扇区,每个磁道分为多个扇区。 每个扇区有相同的数据量。一个扇区是一次读出或写入的最小数据量。,硬盘中读写数据的步骤: 寻道:移动硬盘的I/O磁头,定位到包含数据的磁道。(慢,占据读写数据的大部分时间) 等待包含数据的扇区旋转到磁头下面。 读取或写入一个扇区的数据。 安排扇区的交错法:,概念: 引用的局部性:如果读出文件的一个扇区,很可能就要读出文件

3、的下一个扇区。(假设) 簇:多个扇区组成,为文件分配的最小单位,大小由操作系统所定。 文件分配表:记录哪些簇(扇区)属于哪一个文件。 范围:一组物理上相连的簇。 内部碎片:由于数据没有填满一个扇区或一个簇而浪费的存储空间。,8.2.2 磁盘访问代价,访问磁盘中信息的主要代价一般是寻道时间。 寻道时间依赖于磁头当前所在的磁道与将要访问的目标磁道之间的距离,因此实际寻道时间差别很大。 寻道时间可参考的两个参数: 磁道磁道代价:磁头从一个磁道移到相邻磁道的最短时间。 一次随机访问的平均寻道时间。 其它磁盘访问代价: 等待目标扇区旋转到磁头下的时间。 数据读/写时间。,8.3 缓冲区和缓冲池,例8.1

4、,读取数据的时间代价: 一个磁道(256个扇区): 一个扇区(512个字节):9.5+11.1/2+(1/256)11.1=15.1ms 一个字节: 9.5+11.1/2 = 15.05ms 读取的数据量对读取时间影响不大。因此磁盘驱动器每次都是读入或写入整个扇区的数据。数据暂放在主存中,称缓冲或缓存。 缓冲:从磁盘中取出多余数据,以满足将来的请求。缓冲技术可以减少数据从磁盘中读取的次数。 主存中通常建有多个输入缓冲区和输出缓冲区,缓冲区合起来称为缓冲池。,8.3 缓冲区和缓冲池,当缓冲池填满后,替换缓冲区的方法: 先进先出法。 最不频繁使用法。 最近最少使用法。 虚拟存储技术:将磁盘扩展为主

5、存的一部分。,8.4 程序员的文件视图,处理磁盘文件中记录的方式: 随机访问。 顺序访问。,8.5 外部排序,外部排序的特点: 只能先将一些记录从磁盘中读出,进行排序,再将记录写回磁盘。 主要目标:尽量减少磁盘访问。 在主存内的内部排序比读写磁盘的时间少。 顺序访问磁盘中数据块比随机访问更有效。但高效率的顺序访问要求: 文件应填充到连续的磁道中。 顺序访问过程中,磁盘的I/O磁头要始终在这个文件上,因此不同时处理两个文件。 只对关键码排序,建立索引文件,而不是对整个记录排序。,8.6 外部排序的简单方法,内部排序算法通常不适用于外部排序,如快速排序。 一种较好的外部排序算法:改进的归并算法 将

6、被排序的子序列称为顺串(run) 排序过程(P181),对有n条记录的文件,外部归并排序需要logn趟扫描,即每条记录进行logn次磁盘读写。,对外部归并排序算法的改进: 对小的顺串不做归并排序。即对读入主存的数据做内部排序,并读入尽可能多的数据,减小归并排序的趟数。 每一趟扫描归并多个顺串,即多路归并技术。 所有好的外部排序算法都是基于: 把文件分成大的初始顺串(读入更多记录到主存,执行内部排序)。 把所有顺串归并在一起,形成一个已排序的文件。,8.7 置换选择排序,堆排序算法的一个微小变体。 如果分配给供内部排序数组的可用主存大小是m条记录,平均可创建2m条记录的顺串。,置换选择排序的过程: 在可利用的内存中构建一个数组(堆)、一个输入缓冲区和一个输出缓冲区。 从磁盘上读取记录填充数组。 构建一个最小值堆。设Last = m-1,m为数组大小,Last标识堆中最后一个记录。,8.8 多路归并,R个顺串做二路归并需要logR趟扫描。 归并时,每个顺串只有一个块的记录在主存中,主存空间没有得到充分利用。 一次归串多个顺串,可以充分利用主存空间,并大大减少归并的扫描趟数。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号