磁带上的矩阵换位

时间:2011-12-28 18:38:54

标签: matrix programming-pearls

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

  1. 将行和列索引添加到每个
  2. 按行
  3. 对矩阵中的记录进行排序
  4. 删除附加的索引。
  5. 为什么你要经历这么多麻烦才能完成这项工作?它与磁带有关吗?

2 个答案:

答案 0 :(得分:1)

我认为磁带意味着:要找到一个特定的元素,你必须从头开始到那个元素。

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

答案 1 :(得分:1)

我认为这项工作的意义如下。

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

  2. 但是,来回读写磁带的速度相当慢。但磁带是串行存储设备。因此,连续读写可以节省大量时间。

  3. 合并排序非常适合这种序列化存储,因为它访问元素的方式正如此wikipedia page所述。所以我认为“系统磁带排序”意味着在磁带上进行合并排序。

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