外存排序
来源:互联网 发布:淘宝卖家提现需要多久 编辑:程序博客网 时间:2024/05/05 12:33
外部排序一、问题的提出
外部排序一、问题的提出
1.待排序的记录数量很大,不能一次装入内存,则无法利用前几节讨论的排序方法(否则将
引起频繁访问内存);
2.对外存中数据的读/写是以“数据块”为单位进行的;
读/写外存中一个“数据块”的数据所需要的时间为:
TI/O = tseek + tla + n·twm
其中
tseek 为寻查时间(查找该数据块所在磁道)
tla 为等待(延迟)时间
n·twm 为传输数据块中n个记录的时间
二、外部排序的基本过程
由相对独立的两个步骤组成:
1.按可用内存大小,利用内部排序的方法,构造若干(记录的)有序子序列,通常
称外存中这些记录有序子序列为“归并段”;
2.通过“归并”,逐步扩大(记录的)有序子序列的长度,直至外存中整个记录序
列按关键字有序为止。
例如:假设有一个含10,000个记录的磁盘文件,而当前所用的计算机一次只能对 1,000个记录进行内部排序,则首先利用内部排序的方法得到10个初始归并段, 然后进行逐趟归并。
假设进行2? 路归并(即两两归并),则
第一趟由10个归并段得到5个归并段;
第二趟由 5 个归并段得到3个归并段;
第三趟由 3 个归并段得到2个归并段;
最后一趟归并得到整个记录的有序序列。
分析上述外排过程中访问外存(对外存进行读/写)的次数:
假设“数据块”的大小为200,即每一次访问外存可以读/写200个记录。
则对于10,000个记录,处理一遍需访问外存100次(读和写各50次)。
由此,对上述例子而言,
1. 求得10个初始归并段需访问外存100次;
2. 每进行一趟归并需访问外存100次;
3. 总计访问外存 100 + 4*100 = 500次。
外排总的时间还应包括内部排序所需时间和逐趟归并时进行内部归并的时间,显然, 除去内部排序的因素外,外部排序的时间取决于逐趟归并所需进行的“趟数”。
例如,若对上述例子采用5? 路归并,则只需进行2趟归并,总的访问外存的次数将
压缩到 100+ 2*100 = 300 次
一般情况下,假设待排记录序列含m个初始归并段,外排时采用k? 路归并,则归并
趟数为 ,显然,随之k的增大归并的趟数将减少,因此对外排而言,通常
采用多路归并。k的大小可选,但需综合考虑各种因素。 1.待排序的记录数量很大,不能一次装入内存,则无法利用前几节讨论的排序方法(否则将
引起频繁访问内存);
2.对外存中数据的读/写是以“数据块”为单位进行的;
读/写外存中一个“数据块”的数据所需要的时间为:
TI/O = tseek + tla + n·twm
其中
tseek 为寻查时间(查找该数据块所在磁道)
tla 为等待(延迟)时间
n·twm 为传输数据块中n个记录的时间
二、外部排序的基本过程
由相对独立的两个步骤组成:
1.按可用内存大小,利用内部排序的方法,构造若干(记录的)有序子序列,通常
称外存中这些记录有序子序列为“归并段”;
2.通过“归并”,逐步扩大(记录的)有序子序列的长度,直至外存中整个记录序
列按关键字有序为止。
例如:假设有一个含10,000个记录的磁盘文件,而当前所用的计算机一次只能对 1,000个记录进行内部排序,则首先利用内部排序的方法得到10个初始归并段, 然后进行逐趟归并。
假设进行2? 路归并(即两两归并),则
第一趟由10个归并段得到5个归并段;
第二趟由 5 个归并段得到3个归并段;
第三趟由 3 个归并段得到2个归并段;
最后一趟归并得到整个记录的有序序列。
分析上述外排过程中访问外存(对外存进行读/写)的次数:
假设“数据块”的大小为200,即每一次访问外存可以读/写200个记录。
则对于10,000个记录,处理一遍需访问外存100次(读和写各50次)。
由此,对上述例子而言,
1. 求得10个初始归并段需访问外存100次;
2. 每进行一趟归并需访问外存100次;
3. 总计访问外存 100 + 4*100 = 500次。
外排总的时间还应包括内部排序所需时间和逐趟归并时进行内部归并的时间,显然, 除去内部排序的因素外,外部排序的时间取决于逐趟归并所需进行的“趟数”。
例如,若对上述例子采用5? 路归并,则只需进行2趟归并,总的访问外存的次数将
压缩到 100+ 2*100 = 300 次
一般情况下,假设待排记录序列含m个初始归并段,外排时采用k? 路归并,则归并
趟数为 ,显然,随之k的增大归并的趟数将减少,因此对外排而言,通常
采用多路归并。k的大小可选,但需综合考虑各种因素。
外部排序一、问题的提出
1.待排序的记录数量很大,不能一次装入内存,则无法利用前几节讨论的排序方法(否则将
引起频繁访问内存);
2.对外存中数据的读/写是以“数据块”为单位进行的;
读/写外存中一个“数据块”的数据所需要的时间为:
TI/O = tseek + tla + n·twm
其中
tseek 为寻查时间(查找该数据块所在磁道)
tla 为等待(延迟)时间
n·twm 为传输数据块中n个记录的时间
二、外部排序的基本过程
由相对独立的两个步骤组成:
1.按可用内存大小,利用内部排序的方法,构造若干(记录的)有序子序列,通常
称外存中这些记录有序子序列为“归并段”;
2.通过“归并”,逐步扩大(记录的)有序子序列的长度,直至外存中整个记录序
列按关键字有序为止。
例如:假设有一个含10,000个记录的磁盘文件,而当前所用的计算机一次只能对 1,000个记录进行内部排序,则首先利用内部排序的方法得到10个初始归并段, 然后进行逐趟归并。
假设进行2? 路归并(即两两归并),则
第一趟由10个归并段得到5个归并段;
第二趟由 5 个归并段得到3个归并段;
第三趟由 3 个归并段得到2个归并段;
最后一趟归并得到整个记录的有序序列。
分析上述外排过程中访问外存(对外存进行读/写)的次数:
假设“数据块”的大小为200,即每一次访问外存可以读/写200个记录。
则对于10,000个记录,处理一遍需访问外存100次(读和写各50次)。
由此,对上述例子而言,
1. 求得10个初始归并段需访问外存100次;
2. 每进行一趟归并需访问外存100次;
3. 总计访问外存 100 + 4*100 = 500次。
外排总的时间还应包括内部排序所需时间和逐趟归并时进行内部归并的时间,显然, 除去内部排序的因素外,外部排序的时间取决于逐趟归并所需进行的“趟数”。
例如,若对上述例子采用5? 路归并,则只需进行2趟归并,总的访问外存的次数将
压缩到 100+ 2*100 = 300 次
一般情况下,假设待排记录序列含m个初始归并段,外排时采用k? 路归并,则归并
趟数为 ,显然,随之k的增大归并的趟数将减少,因此对外排而言,通常
采用多路归并。k的大小可选,但需综合考虑各种因素。 1.待排序的记录数量很大,不能一次装入内存,则无法利用前几节讨论的排序方法(否则将
引起频繁访问内存);
2.对外存中数据的读/写是以“数据块”为单位进行的;
读/写外存中一个“数据块”的数据所需要的时间为:
TI/O = tseek + tla + n·twm
其中
tseek 为寻查时间(查找该数据块所在磁道)
tla 为等待(延迟)时间
n·twm 为传输数据块中n个记录的时间
二、外部排序的基本过程
由相对独立的两个步骤组成:
1.按可用内存大小,利用内部排序的方法,构造若干(记录的)有序子序列,通常
称外存中这些记录有序子序列为“归并段”;
2.通过“归并”,逐步扩大(记录的)有序子序列的长度,直至外存中整个记录序
列按关键字有序为止。
例如:假设有一个含10,000个记录的磁盘文件,而当前所用的计算机一次只能对 1,000个记录进行内部排序,则首先利用内部排序的方法得到10个初始归并段, 然后进行逐趟归并。
假设进行2? 路归并(即两两归并),则
第一趟由10个归并段得到5个归并段;
第二趟由 5 个归并段得到3个归并段;
第三趟由 3 个归并段得到2个归并段;
最后一趟归并得到整个记录的有序序列。
分析上述外排过程中访问外存(对外存进行读/写)的次数:
假设“数据块”的大小为200,即每一次访问外存可以读/写200个记录。
则对于10,000个记录,处理一遍需访问外存100次(读和写各50次)。
由此,对上述例子而言,
1. 求得10个初始归并段需访问外存100次;
2. 每进行一趟归并需访问外存100次;
3. 总计访问外存 100 + 4*100 = 500次。
外排总的时间还应包括内部排序所需时间和逐趟归并时进行内部归并的时间,显然, 除去内部排序的因素外,外部排序的时间取决于逐趟归并所需进行的“趟数”。
例如,若对上述例子采用5? 路归并,则只需进行2趟归并,总的访问外存的次数将
压缩到 100+ 2*100 = 300 次
一般情况下,假设待排记录序列含m个初始归并段,外排时采用k? 路归并,则归并
趟数为 ,显然,随之k的增大归并的趟数将减少,因此对外排而言,通常
采用多路归并。k的大小可选,但需综合考虑各种因素。
- 外存排序
- (10)大数据外存归并排序
- 内存,外存
- 外存分配方式
- android内存外存
- 6.3外存分配方式
- ROM RAM 内存 外存
- 外存IO操作
- 内存与外存的理解
- android外存储的状态
- Android 外存数据的读写
- 主流的外存设备介绍
- 内存、外存、主存、辅存
- 文件管理-外存分配方式
- 获取外存卡上的音乐文件信息
- 手机内存卡应该叫外存卡
- 浅谈外存分配的几种方式
- Exynos4412 所用外存 —— eMMC
- Linux驱动模块初始教程:一步一步,从helloworld到insmod->printk!!!
- 在Windows 2003,XP上安装Windows Phone 7开发工具
- 关于ARM的22个常用概念--的确经典
- 再再论指针
- jQuery 隐藏表格列
- 外存排序
- Android Service解析
- C base
- 一个MR解决了2个月反思
- 快速创建精彩的Flash游戏(一) Flash2D游戏引擎简介
- 整理Windows Phone 7教程(很全面)
- 如何高效使用C语言
- java设计模式-状态模式
- 自动同步服务器vm文件的shell脚本