编程珍珠问题7是关于转置存储在磁带上的4000 x 4000
矩阵。
我的解决方案是简单地使用临时变量并交换{{{}的内容1}}和a[i][j]
。
作者给出的解决方案使我有点困惑。他说我们应该:
为什么你要经历这么多麻烦才能完成这项工作?它与磁带有关吗?
答案 0 :(得分:1)
我认为磁带意味着:要找到一个特定的元素,你必须从头开始到那个元素。
但是我很难理解“什么是系统磁带排序”和“它为何起作用”。
答案 1 :(得分:1)
我认为这项工作的意义如下。
对于那个年纪较大的计算机,没有足够的RAM来容纳那个大小的矩阵。所以你提出的交换方法是不可行的。为了转置这样大的矩阵,应该利用外部存储器,即磁带。
但是,来回读写磁带的速度相当慢。但磁带是串行存储设备。因此,连续读写可以节省大量时间。
合并排序非常适合这种序列化存储,因为它访问元素的方式正如此wikipedia page所述。所以我认为“系统磁带排序”意味着在磁带上进行合并排序。
记住上述三点后,我想你可以理解这个练习。