编程要点 第 7 题是关于转置4000 x 4000
存储在磁带上的矩阵。
我的解决方案是简单地使用一个临时变量并交换 and 的a[i][j]
内容a[j][i]
。
作者给出的解决方案让我有点困惑。他说我们应该:
- 将行和列索引添加到每个
- 按行对矩阵中的记录进行排序
- 删除附加的索引。
为什么要经历这么多麻烦才能完成这项工作?跟磁带有关系吗?
编程要点 第 7 题是关于转置4000 x 4000
存储在磁带上的矩阵。
我的解决方案是简单地使用一个临时变量并交换 and 的a[i][j]
内容a[j][i]
。
作者给出的解决方案让我有点困惑。他说我们应该:
为什么要经历这么多麻烦才能完成这项工作?跟磁带有关系吗?
我认为磁带的意思是:要找到某个元素,你必须从一开始到那个元素。
但是我很难理解“什么是系统磁带分类”和“它为什么起作用”。
我认为这个练习的意义如下。
对于那个年代的计算机来说,没有足够的 RAM 来容纳这么大的矩阵。所以你提出的交换方法是不可行的。为了转置如此大的矩阵,应该利用外部存储器,即磁带。
但是,来回读写磁带相当慢。但是磁带是串行存储设备。所以串行读写可以节省很多时间。
合并排序非常适合这种序列化存储,因为它访问元素的方式,正如在这个维基百科页面上所说的那样。所以我相信“系统磁带排序”意味着磁带上的合并排序。
记住以上三点后,我想你可以理解这个练习了。