什么是外部排序算法

  • 内容
  • 评论
  • 相关

上一章介绍了很多排序算法,插入排序、选择排序、归并排序等等,这些算法都属于内部排序算法,即排序的整个过程只是在内存中完成。而当待排序的文件比内存的可使用容量还大时,文件无法一次性放到内存中进行排序,需要借助于外部存储器(例如硬盘、U盘、光盘),这时就需要用到本章介绍的外部排序算法来解决。

外部排序算法由两个阶段构成:

  1. 按照内存大小,将大文件分成若干长度为 l 的子文件(l 应小于内存的可使用容量),然后将各个子文件依次读入内存,使用适当的内部排序算法对其进行排序(排好序的子文件统称为“归并段”或者“顺段”),将排好序的归并段重新写入外存,为下一个子文件排序腾出内存空间;
  2. 对得到的顺段进行合并,直至得到整个有序的文件为止。

例如,有一个含有 10000 个记录的文件,但是内存的可使用容量仅为 1000 个记录,毫无疑问需要使用外部排序算法,具体分为两步:

  • 将整个文件其等分为 10 个临时文件(每个文件中含有 1000 个记录),然后将这 10 个文件依次进入内存,采取适当的内存排序算法对其中的记录进行排序,将得到的有序文件(初始归并段)移至外存。
  • 对得到的 10 个初始归并段进行如图 1 的两两归并,直至得到一个完整的有序文件。

注意:此例中采用了将文件进行等分的操作,还有不等分的算法,后面章节会介绍。


本文标题:什么是外部排序算法

本文地址:http://www.hosteonscn.com/5267.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注