4.5 磁带文件存放优化
4.5 磁带文件存放优化
基础问题:假设其中一盘磁带上有n份文件,他们的长度分别为\(L[0],L[1],L[2],...,L[n-1]\),且被访问的概率分别为\(P[0],P[1],P[2],...,P[n-1]\),如果这些文件被访问的概率相同,那么请问怎样安排他们在磁带上的存储顺序最好?
解答:
首先定义什么是最好,我们知道,磁带是一种线性存储的设备,对于存储在上面的第n个文件的寻址,我们要先经过前面的n-1个文件的磁带长度,时间复杂度为O(n),那么,如果能够找到一种文件存储顺序,使得访问这些文件的平均访问长度最短,就可以得到最佳的效率,也就是最好的存储顺序。
从小到大存放
拓展问题:
如果被访问的概率不同,那么又该如何存放?
按照\(\frac{P[i]}{L[i]}\)的值从大到小排列
// 4.5 磁带文件存放优化
class Test{
public static void main(String[] args) {
/**
基础问题:
假设其中一盘磁带上有n份文件,他们的长度分别为$L[0],L[1],L[2],...,L[n-1]$,且被访问的概率分别为$P[0],P[1],P[2],...,P[n-1]$,如果这些文件被访问的概率相同,那么请问怎样安排他们在磁带上的存储顺序最好?
解答:
首先定义什么是最好,我们知道,磁带是一种线性存储的设备,对于存储在上面的第n个文件的寻址,我们要先经过前面的n-1个文件的磁带长度,时间复杂度为O(n),那么,如果能够找到一种文件存储顺序,使得访问这些文件的平均访问长度最短,就可以得到最佳的效率,也就是最好的存储顺序。
从小到大存放
*/
/**
拓展问题:
如果被访问的概率不同,那么又该如何存放?
按照$ P[i]/L[i] $的值从大到小排列
*/
}
}
Saying Less Doing More