外存储器

一般来说计算机存储设备分为主存储器和辅助存储器。主存储器通常指随机存取存储器(RAM)辅助存储器磁盘(包括磁盘和软盘)和磁带这样的设备。磁盘属于随机存取设备,磁带则属于顺序存储设备。

磁盘存储器

磁盘是一种直接存取的存储设备(DASD),访问存储在磁盘文件中任何一条记录所花费的时间几乎相同。磁盘实际上是一个扁平的圆盘,在盘面上有许多称为磁道的圆圈,信息就记录在磁道上。由于磁道的圆圈为许多同心圆,所以可以直接存取。磁盘可以是单面的比如软盘,也可以由若干个盘面组成盘组,如硬盘。每个盘片上有两个面。对于一个硬盘来说,最顶上和最底下盘片的外侧面不存储信息。
磁盘由磁盘驱动器控制,磁盘驱动器执行读写信息的功能。盘片装在一个主轴上,并绕主轴高速旋转,当磁道在读写头下通过时,便可以进行信息的读写。
磁盘又有固定头盘和活动头盘之分。固定头盘的每一道上都有独立的磁头,它是固定不动的,专门负责读写某一磁道上的信息。活动头盘的磁头是可以移动的。盘组也是可变的。一个盘面上只有一个磁头,它可以在该面上从一道移动到另一道。磁头装在一个活动臂上,不同面上的磁头是同时移动的,并处于同一圆柱面上,圆柱面的个数就是盘片面上的磁道数
通常在磁盘上标明一个具体信息必须用一个三维地址:柱面号、盘面号和块号。其中柱面号确定读写头的径向运动,而块号确定信息在盘片圆圈上的位置。
为访问一块信息,首先必须找到柱面,移动臂使磁头移动到所需柱面上(称为定位或寻查);其次等待要访问的信息转到磁头之下;最后读写所需信息。

磁带存储器

一般用来进行大量信息的备份。常用的磁带是1/2英寸宽,2400英尺长,绕在一个卷盘上的磁性材料的一条窄带。使用时,将磁带盘放在磁带机上,驱动器控制磁带盘转动,带动磁带向前移动。通过读写头就可以读出磁带上的信息或把信息写入磁带中。
在1/2英寸宽的带面上可以记录9位或7位二进制信息。通常称为9道带或7道带。以9道带为例,每一横排有9位,其中的8位组成一个字节,另一位为奇偶校验位。
磁盘上的信息是以块为单位存放的。一个信息块由若干字节组成,比如1024B。要读写一个块上的信息,首先要定位,即通过磁带的移动使磁头对准被读块的前边。为适应磁带启动时的加速和停止时的滑动,块与块之间需要留出间隙,间隙上不存放数据信息。
读取磁带上的数据时,一次输入操作把整个信息块都读到内存缓冲区中,然后从缓冲区中取出有关数据;写的过程相反,先把数据写到缓冲区中,然后再把整块信息写到磁带上。一个信息块是一个物理记录。
磁带存储器的优点是信息存储量大,便于携带,价格便宜等。缺点是读写速度慢,通常仅读取一个信息块就需要几毫秒的时间。由于磁带机是顺序存取设备,定位时间于读写头当前位置到所要存取的数据之间的距离有关,距离越大,定位时间就越长。因此磁带存储器主要用于处理变化小,只进行顺序存取的大量数据,如数据备份等。
尽管辅助存储器与主存储器相比具有永久存储能力和便携性,但是访问时间相对于RAM的访问时间却很长,访问时间差距大约在10万到100万倍之间。由于访问磁盘中的数据太慢,因而在设计基于磁盘的应用程序时需遵循:使磁盘访问次数最少。

外部排序的方法

如果需要排序的一组记录太大而不能放到主存储器中,那么只能把其中一些记录先从磁盘中读出来,进行重排,然后再把这些记录写回磁盘。这个过程不断重复下去直到对整个文件进行了排序,在整个排序过程中每条记录可能被读写多次。

归并排序法

由两个相对独立的阶段组成。第一阶段是将文件中的数据分段输入内存,在内存中采用内排序的方法对其排序,排序玩的文件段称为归并段或顺段,再将其写回外存中,这样在外存中形成许多初始归并段。第二阶段是对这些初始归并段采用某种归并方法,进行多边归并,是归并段由小到大,最后在外存上形成整个文件的单一归并段完成排序。

多路归并排序

败者树

树形选择排序的一种变形,是一棵完全二叉树,其中每个叶子结点存放各归并段在归并过程中当前参加比较的记录,每个非叶子结点存放它的两个孩子结点中记录关键字大的结点(即败者),根结点中存放树中当前记录关键字最小的结点。

置换-选择排序

使用内部排序可以生出初始归并段,但所生成的归并段的大小正好等于一次能放入内存中的记录的个数。显然这存在局限性。
置换-选择排序的基本思想
先从输入文件中读取t个记录到内存工作区,然后选这t个记录中键值最小的记录写到输出文件中。再从输入文件中读取下一个记录,如果新读入记录的键值小于当写到输出文件的记录的键值,则该记录应归于下一段,可在工作区中给记录加标志以示区别;否则若读入的新记录的键值大于刚刚写入到输出文件的记录的键值,则新记录可归入当前段。如此进行下去,当前段记录个数会初见增加。当缓冲区中所有记录都做过标志,需归入下一段时,则当前初始归并段已经全部生成。接着用同样的方法生成下一个初始归并段,重复直到全部记录都写到输出文件为止。