1

编程要点 第 7 题是关于转置4000 x 4000存储在磁带上的矩阵。
我的解决方案是简单地使用一个临时变量并交换 and 的a[i][j]内容a[j][i]
作者给出的解决方案让我有点困惑。他说我们应该:

  1. 将行和列索引添加到每个
  2. 按行对矩阵中的记录进行排序
  3. 删除附加的索引。

为什么要经历这么多麻烦才能完成这项工作?跟磁带有关系吗?

4

2 回答 2

1

我认为磁带的意思是:要找到某个元素,你必须从一开始到那个元素。

但是我很难理解“什么是系统磁带分类”和“它为什么起作用”。

于 2011-12-31T09:06:50.853 回答
1

我认为这个练习的意义如下。

  1. 对于那个年代的计算机来说,没有足够的 RAM 来容纳这么大的矩阵。所以你提出的交换方法是不可行的。为了转置如此大的矩阵,应该利用外部存储器,即磁带。

  2. 但是,来回读写磁带相当慢。但是磁带是串行存储设备。所以串行读写可以节省很多时间。

  3. 合并排序非常适合这种序列化存储,因为它访问元素的方式,正如在这个维基百科页面上所说的那样。所以我相信“系统磁带排序”意味着磁带上的合并排序。

记住以上三点后,我想你可以理解这个练习了。

于 2013-12-03T15:08:50.940 回答